|
What this is
Other links
The source code/******************************************************************************* * Copyright (c) 2005, 2006 IBM Corporation and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * IBM Corporation - initial API and implementation *******************************************************************************/ package org.eclipse.pde.internal.ui.nls; import java.io.IOException; import java.io.InputStream; import java.util.ArrayList; import java.util.Properties; import org.eclipse.core.resources.IFile; import org.eclipse.core.resources.IProject; import org.eclipse.core.runtime.CoreException; import org.eclipse.pde.core.IModel; import org.eclipse.pde.core.plugin.IPluginModelBase; import org.eclipse.pde.internal.core.PDEManager; public class ModelChange { private static final String DEFAULT_LOCALIZATION_PREFIX = "plugin"; //$NON-NLS-1$ public static final String LOCALIZATION_FILE_SUFFIX = ".properties"; //$NON-NLS-1$ private ModelChangeFile fXMLCoupling; private ModelChangeFile fMFCoupling; private IPluginModelBase fParent; private boolean fPreSelected; private String fBundleLocalization; private Properties fProperties; private boolean fReloadProperties = true; protected static boolean modelLoaded(IModel model) { try { model.load(); } catch (CoreException e) { } return (model.isLoaded()); } public ModelChange(IPluginModelBase parent, boolean preSelected) { fParent = parent; fPreSelected = preSelected; fBundleLocalization = PDEManager.getBundleLocalization(fParent); if (fBundleLocalization == null) fBundleLocalization = DEFAULT_LOCALIZATION_PREFIX; } public void addChange(IFile file, ModelChangeElement change) { if (change == null || file == null) return; String ext = file.getFileExtension(); if (ext.equalsIgnoreCase("xml")) //$NON-NLS-1$ addXMLChange(file, change); else if (ext.equalsIgnoreCase("MF")) //$NON-NLS-1$ addMFChange(file, change); else return; } private void addXMLChange(IFile file, ModelChangeElement change) { if (fXMLCoupling == null) { fXMLCoupling = new ModelChangeFile(file, this); } if (!fXMLCoupling.getFile().equals(file)) { return; } fXMLCoupling.add(change); } private void addMFChange(IFile file, ModelChangeElement change) { if (fMFCoupling == null) { fMFCoupling = new ModelChangeFile(file, this); } fMFCoupling.add(change); } public IFile[] getChangeFiles() { IFile xmlFile = fXMLCoupling != null ? fXMLCoupling.getFile() : null; IFile mfFile = fMFCoupling != null ? fMFCoupling.getFile() : null; if (xmlFile != null && mfFile != null) return new IFile[] {xmlFile, mfFile}; if (xmlFile != null) return new IFile[] {xmlFile}; if (mfFile != null) return new IFile[] {mfFile}; return new IFile[0]; } public IFile getPropertiesFile() { IProject project = fParent.getUnderlyingResource().getProject(); return project.getFile(getBundleLocalization() + LOCALIZATION_FILE_SUFFIX); } public Properties getProperties() { if (fProperties == null || fReloadProperties) { try { fProperties = new Properties(); IFile propertiesFile = getPropertiesFile(); if (propertiesFile != null && propertiesFile.exists()) { InputStream stream = propertiesFile.getContents(); fProperties.load(stream); stream.close(); } } catch (CoreException e) { } catch (IOException e) { } fReloadProperties = false; } return fProperties; } public ArrayList getChangesInFile(IFile file) { if (fXMLCoupling != null && file == fXMLCoupling.getFile()) return fXMLCoupling.getChanges(); if (fMFCoupling != null && file == fMFCoupling.getFile()) return fMFCoupling.getChanges(); return null; } public int getNumberOfChangesInFile(IFile file) { if (fXMLCoupling != null && file == fXMLCoupling.getFile()) return fXMLCoupling.getNumChanges(); if (fMFCoupling != null && file == fMFCoupling.getFile()) return fMFCoupling.getNumChanges(); return 0; } public boolean wasPreSelected() { return fPreSelected; } public IPluginModelBase getParentModel() { return fParent; } public ModelChangeFile[] getModelChangeFiles() { if (fXMLCoupling != null && fMFCoupling != null) return new ModelChangeFile[] {fXMLCoupling, fMFCoupling}; if (fXMLCoupling != null) return new ModelChangeFile[] {fXMLCoupling}; if (fMFCoupling != null) return new ModelChangeFile[] {fMFCoupling}; return new ModelChangeFile[0]; } public void setBundleLocalization(String bundleLocalization) { if (bundleLocalization == null || bundleLocalization.endsWith(LOCALIZATION_FILE_SUFFIX)) throw new IllegalArgumentException(); if (bundleLocalization.equals(fBundleLocalization)) return; fBundleLocalization = bundleLocalization; fReloadProperties = true; } public String getBundleLocalization() { return fBundleLocalization; } public boolean localizationSet() { String localization = PDEManager.getBundleLocalization(fParent); return localization != null && localization.length() > 0; } } |
... this post is sponsored by my books ... | |
![]() #1 New Release! |
![]() FP Best Seller |
Copyright 1998-2021 Alvin Alexander, alvinalexander.com
All Rights Reserved.
A percentage of advertising revenue from
pages under the /java/jwarehouse
URI on this website is
paid back to open source projects.