Java tutorial
package com.mentor.nucleus.bp.core; //====================================================================== // // File: src/com/mentor/nucleus/bp/core/CorePlugin.java // // WARNING: Do not edit this generated file // Generated by: arc/create_core_plugin_class.arc // Version: $Revision: 1.64 $ // // (c) Copyright 2006-2014 by Mentor Graphics Corp. All rights reserved. // //====================================================================== // import java.io.File; import java.io.FileNotFoundException; import java.io.IOException; import java.io.InputStream; import java.io.PrintStream; import java.lang.reflect.Constructor; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import java.net.MalformedURLException; import java.net.URL; import java.util.ArrayList; import java.util.HashMap; import java.util.Iterator; import java.util.List; import java.util.MissingResourceException; import java.util.ResourceBundle; import java.util.Vector; import org.eclipse.core.resources.IProject; import org.eclipse.core.resources.IResource; import org.eclipse.core.resources.IResourceChangeEvent; import org.eclipse.core.resources.IResourceDelta; import org.eclipse.core.resources.IResourceDeltaVisitor; import org.eclipse.core.resources.IWorkspace; import org.eclipse.core.resources.ProjectScope; import org.eclipse.core.resources.ResourcesPlugin; import org.eclipse.core.runtime.CoreException; import org.eclipse.core.runtime.FileLocator; import org.eclipse.core.runtime.IConfigurationElement; import org.eclipse.core.runtime.IExtension; import org.eclipse.core.runtime.IExtensionPoint; import org.eclipse.core.runtime.IExtensionRegistry; import org.eclipse.core.runtime.IProgressMonitor; import org.eclipse.core.runtime.IStatus; import org.eclipse.core.runtime.MultiStatus; import org.eclipse.core.runtime.NullProgressMonitor; import org.eclipse.core.runtime.Path; import org.eclipse.core.runtime.Platform; import org.eclipse.core.runtime.Status; import org.eclipse.core.runtime.preferences.IEclipsePreferences; import org.eclipse.core.runtime.preferences.IEclipsePreferences.IPreferenceChangeListener; import org.eclipse.core.runtime.preferences.IScopeContext; import org.eclipse.jface.action.Action; import org.eclipse.jface.dialogs.ErrorDialog; import org.eclipse.jface.dialogs.IDialogConstants; import org.eclipse.jface.dialogs.MessageDialogWithToggle; import org.eclipse.jface.preference.IPreferenceStore; import org.eclipse.jface.preference.PreferenceManager; import org.eclipse.jface.preference.PreferenceNode; import org.eclipse.jface.resource.ImageDescriptor; import org.eclipse.jface.resource.ImageRegistry; import org.eclipse.jface.viewers.TreeViewer; import org.eclipse.swt.dnd.Clipboard; import org.eclipse.swt.graphics.Image; import org.eclipse.swt.widgets.Display; import org.eclipse.ui.PlatformUI; import org.eclipse.ui.actions.ExportResourcesAction; import org.eclipse.ui.actions.ImportResourcesAction; import org.eclipse.ui.plugin.AbstractUIPlugin; import org.osgi.framework.Bundle; import org.osgi.framework.BundleContext; import org.osgi.service.prefs.Preferences; import com.mentor.nucleus.bp.core.common.BridgePointPreferencesStore; import com.mentor.nucleus.bp.core.common.ComponentResourceListener; import com.mentor.nucleus.bp.core.common.IAllActivityModifier; import com.mentor.nucleus.bp.core.common.IPasteListener; import com.mentor.nucleus.bp.core.common.ModelRoot; import com.mentor.nucleus.bp.core.common.NonRootModelElement; import com.mentor.nucleus.bp.core.common.PersistenceChangeTracker; import com.mentor.nucleus.bp.core.ui.AbstractModelExportFactory; import com.mentor.nucleus.bp.core.ui.AbstractModelImportFactory; import com.mentor.nucleus.bp.core.ui.AbstractStreamExportFactory; import com.mentor.nucleus.bp.core.ui.AbstractStreamImportFactory; import com.mentor.nucleus.bp.core.ui.DeleteAction; import com.mentor.nucleus.bp.core.ui.IModelImport; import com.mentor.nucleus.bp.core.ui.RenameAction; import com.mentor.nucleus.bp.core.ui.marker.DelayedMarkerJob; import com.mentor.nucleus.bp.core.ui.marker.ProblemModelChangeListener; import com.mentor.nucleus.bp.core.ui.preferences.BridgePointProjectActionLanguagePreferenceNode; import com.mentor.nucleus.bp.core.ui.preferences.BridgePointProjectPreferences; import com.mentor.nucleus.bp.core.ui.preferences.BridgePointProjectReferencesPreferenceNode; import com.mentor.nucleus.bp.core.util.CoreUtil; import com.mentor.nucleus.bp.core.util.ResourceActivityVisitor; /** * The main plugin class to be used in the desktop. */ public class CorePlugin extends AbstractUIPlugin { //The shared instance. private static CorePlugin plugin; //Resource bundle. private ResourceBundle resourceBundle; private static Clipboard clipboard; //Delete and rename actions; private static Action deleteAction; private static Vector renameActions = new Vector(); private static ImageRegistry imageRegistry = null; private static final int FILE_FORMAT_ERROR = 1; public static final String MODEL_LOAD_ERROR = "Problem loading model"; public static final String DUPLICATE_NAME_ERROR = "Name already exists."; public static final String INVALID_NAME_SPACES = "Spaces are not allowed in the name of an element of this type."; public static final String DANGLING_REFERENCE_DECORATOR_ID = "com.mentor.nucleus.bp.ui.explorer.decorators.danglingreferencedecorator"; //$NON-NLS-1$ public static final Object UPGRADE_FAMILY = "UPGRADE_FAMILY"; //$NON-NLS-1$ public static PrintStream out = System.out; public static PrintStream err = System.err; public static boolean loggingEnabled = true; private static ProblemModelChangeListener problemListener; private static NonRootModelElement[] loadedGlobals; private ResourceChangeListener projectListener; /** * The constructor. */ public CorePlugin() { super(); if (!PlatformUI.isWorkbenchRunning()) { CoreUtil.IsRunningHeadless = true; } plugin = this; try { resourceBundle = ResourceBundle.getBundle("com.mentor.nucleus.bp.core.CorePluginResources"); //$NON-NLS-1$ } catch (MissingResourceException x) { resourceBundle = null; } IExtensionRegistry reg = Platform.getExtensionRegistry(); IExtensionPoint extPt = reg.getExtensionPoint("com.mentor.nucleus.bp.core.editors"); //$NON-NLS-1$ IExtension[] exts = extPt.getExtensions(); for (int i = 0; i < exts.length; i++) { IConfigurationElement[] elems = exts[i].getConfigurationElements(); for (int j = 0; j < elems.length; j++) { if (elems[j].getName().equals("editor")) { //$NON-NLS-1$ String listenerClass = elems[j].getAttribute("listenerClass"); //$NON-NLS-1$ if (listenerClass != null && !listenerClass.equals("")) { try { Runnable listener = (Runnable) elems[j].createExecutableExtension("listenerClass"); //$NON-NLS-1$ listener.run(); } catch (CoreException e) { logError("Model Listener class " + elems[j].getAttribute("listenerClass")//$NON-NLS-2$ + " not loaded.", e); } } } } } loadGlobals(); } private void loadGlobals() { Bundle bpBundle = Platform.getBundle("com.mentor.nucleus.bp.pkg"); Path globalsPath = new Path("globals/Globals.xtuml"); URL fileURL = FileLocator.find(bpBundle, globalsPath, null); String fileName = null; try { fileURL = FileLocator.resolve(fileURL); fileName = fileURL.getFile(); } catch (IOException e) { String msg = "Unable to locate: globals/Globals.xtuml. "; if (bpBundle == null) { msg += "Unable to get bundle: com.mentor.nucleus.bp.pkg "; } if (fileURL == null) { msg += "The file URL is null. "; } else { msg += "The file URL is: \n"; msg += "\tProtocol: " + fileURL.getProtocol() + "\n"; msg += "\tPort: " + fileURL.getPort() + "\n"; msg += "\tHost: " + fileURL.getHost() + "\n"; msg += "\tFile: " + fileURL.getFile() + "\n"; msg += "\tExternalForm: " + fileURL.toExternalForm() + "\n"; } logError(msg, e); //$NON-NLS-1$ } AbstractModelImportFactory mif = CorePlugin.getModelImportFactory(); try { IModelImport importer = mif.create(fileName, Ooaofooa.getDefaultInstance(), null, false, true, true); importer.run(new NullProgressMonitor()); loadedGlobals = importer.getLoadedInstances(); } catch (FileNotFoundException fnf) { CorePlugin.logError("Internal error: Global element definition file not found.", fnf); } catch (InvocationTargetException e) { CorePlugin.logError("Internal error: Could not load global element definition file.", e); } catch (InterruptedException e) { CorePlugin.logError("Internal error: Could not load global element definition file.", e); } } public static NonRootModelElement[] getLoadedGlobals() { return loadedGlobals; } static private AbstractModelImportFactory modelImportFactory = null; static private AbstractModelImportFactory sqlImportFactory = null; static private AbstractStreamExportFactory streamExportFactory = null; static private AbstractStreamImportFactory streamImportFactory = null; public static AbstractModelImportFactory getSqlImportFactory() { if (sqlImportFactory == null) { sqlImportFactory = AbstractModelImportFactory.getInstance("com.mentor.nucleus.bp.io.sql", //$NON-NLS-1$ "ImportModelFactory"); //$NON-NLS-1$ } return sqlImportFactory; } public static AbstractModelImportFactory getModelImportFactory() { if (modelImportFactory == null) { modelImportFactory = AbstractModelImportFactory.getInstance("com.mentor.nucleus.bp.io.mdl", //$NON-NLS-1$ "ImportModelFactory"); //$NON-NLS-1$ } return modelImportFactory; } public static AbstractStreamExportFactory getStreamExportFactory() { if (streamExportFactory == null) { streamExportFactory = AbstractStreamExportFactory.getInstance("com.mentor.nucleus.bp.io.mdl", //$NON-NLS-1$ "ExportStreamFactory"); //$NON-NLS-1$ } return streamExportFactory; } public static AbstractStreamImportFactory getStreamImportFactory() { if (streamImportFactory == null) { streamImportFactory = AbstractStreamImportFactory.getInstance("com.mentor.nucleus.bp.io.mdl", //$NON-NLS-1$ "ImportStreamFactory"); //$NON-NLS-1$ } return streamImportFactory; } public String doLoadSql(SystemModel_c system, String rootId, File model, IProgressMonitor monitor, boolean parseAll, boolean isTemplate) { return executeImportFactory(getSqlImportFactory(), system, rootId, model, monitor, parseAll, isTemplate); } public String doLoad(SystemModel_c system, String rootId, InputStream model, IProgressMonitor monitor, boolean parseAll, boolean isTemplate) { return executeImportFactory(getModelImportFactory(), system, rootId, model, monitor, parseAll, isTemplate); } private String executeImportFactory(AbstractModelImportFactory importFactory, SystemModel_c system, String rootId, File model, IProgressMonitor monitor, boolean parseAll, boolean isTemplate) { try { IModelImport im = importFactory.create(model.getAbsolutePath(), Ooaofooa.getInstance(rootId, false), system, parseAll, true, isTemplate); int validate_result = im.countAndValidateInsertStatements(); if (validate_result > 0) { im.run(monitor); } return im.getErrorMessage(); } catch (FileNotFoundException fnf) { logError(MODEL_LOAD_ERROR, fnf); } catch (InterruptedException i) { logError(MODEL_LOAD_ERROR, i); } catch (InvocationTargetException it) { logError(MODEL_LOAD_ERROR, it); } return "Problem loading model, see error log"; } private String executeImportFactory(AbstractModelImportFactory importFactory, SystemModel_c system, String rootId, InputStream model, IProgressMonitor monitor, boolean parseAll, boolean isTemplate) { try { IModelImport im = importFactory.create(model, Ooaofooa.getInstance(rootId, false), system, parseAll, true, true, isTemplate); int validate_result = im.countAndValidateInsertStatements(); if (validate_result > 0) { im.run(monitor); } return im.getErrorMessage(); } catch (IOException io) { logError(MODEL_LOAD_ERROR, io); } catch (InterruptedException i) { logError(MODEL_LOAD_ERROR, i); } catch (InvocationTargetException it) { logError(MODEL_LOAD_ERROR, it); } return "Problem loading model, see error log"; } public static MultiStatus createImportErrorStatus(boolean isFileImport, String errorMessage) { final String headers[] = new String[] { "There was an error loading the model", "There was an error importing the file" }; String name = getDefault().getBundle().getSymbolicName(); MultiStatus errorStatus = new MultiStatus(name, FILE_FORMAT_ERROR, headers[isFileImport ? 1 : 0], null); String[] msg_lines = errorMessage.split("\n"); //$NON-NLS-1$ for (int i = 0; i < msg_lines.length; ++i) { errorStatus.add(new Status(IStatus.ERROR, name, FILE_FORMAT_ERROR, msg_lines[i], null)); } CorePlugin.getDefault().getLog().log(errorStatus); return errorStatus; } public static void showImportErrorMessage(boolean isFileImport, String errorMessage) { final String titles[] = new String[] { "Error loading model", "Invalid File" }; MultiStatus errorStatus = createImportErrorStatus(isFileImport, errorMessage); ErrorDialog.openError(PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell(), titles[isFileImport ? 1 : 0], null, errorStatus); } /** * Returns the shared instance. */ public static CorePlugin getDefault() { return plugin; } /** * Get the preferences store, force the BridgePoint preferences to be refreshed. */ public IPreferenceStore getPreferenceStore() { IPreferenceStore store = super.getPreferenceStore(); return store; } /** * Returns the workspace instance. */ public static IWorkspace getWorkspace() { return ResourcesPlugin.getWorkspace(); } /** * Returns the string from the plugin's resource bundle, * or 'key' if not found. */ public static String getResourceString(String key) { ResourceBundle bundle = CorePlugin.getDefault().getResourceBundle(); try { return bundle.getString(key); } catch (MissingResourceException e) { return key; } } /** * Returns the plugin's resource bundle, */ public ResourceBundle getResourceBundle() { return resourceBundle; } /** * Returns the ImageDescriptor instance identified by the passed * string. */ public static ImageDescriptor getImageDescriptor(String name) { String iconPath = "icons/"; try { CorePlugin plugin = getDefault(); if (plugin == null) { RuntimeException rtException = new RuntimeException( "Unable to acquire the CorePlugin therefore the icon " + iconPath + name + " can not be loaded."); throw rtException; } URL installURL = plugin.getBundle().getEntry("/"); URL url = new URL(installURL, iconPath + name); InputStream check = null; try { check = url.openStream(); } catch (IOException e1) { logError("Can not load the icon: " + iconPath + name, e1); } finally { if (check != null) { try { check.close(); } catch (IOException e2) { } } } ImageDescriptor imageDescriptor = getStaticImageRegistry().getDescriptor(name); if (imageDescriptor == null) { imageDescriptor = ImageDescriptor.createFromURL(url); if ((!name.equals("InterfaceOperation_c")) && (!name.equals("InterfaceSignal_c") && (!name.equals("ProvidedOperation_c")) && (!name.equals("ProvidedSignal_c")) && (!name.equals("RequiredOperation_c")) && (!name.equals("RequiredSignal_c")))) { getStaticImageRegistry().put(name, imageDescriptor); } } return imageDescriptor; } catch (RuntimeException e) { // this can happen if we fail to acquire a model builder license. return ImageDescriptor.getMissingImageDescriptor(); } catch (MalformedURLException e) { // this can happen if we fail to acquire a model builder license. return ImageDescriptor.getMissingImageDescriptor(); } } public static Image getImageFor(String imagePath) { Image image = getStaticImageRegistry().get(imagePath); if (image == null) { ImageDescriptor descriptor = getImageDescriptor(imagePath); image = descriptor.createImage(); } return image; } public static Image getImageFor(Object object) { return getImageFor(object, true); } public static Image getImageFor(Object object, boolean returnDefaultOnFail) { String type = object.getClass().getName(); //Removing the packge name from the type string //We need to remove the full package path if (type.lastIndexOf('.') != -1) type = type.substring(type.lastIndexOf('.') + 1); return getImageFor(type, false, object, returnDefaultOnFail); } public static ImageDescriptor getImageDescriptorFor(String objectName, boolean stripName) { return getImageDescriptorFor(objectName, stripName, true); } public static ImageDescriptor getImageDescriptorFor(String objectName, boolean stripName, boolean returnDefaultOnFail) { return getImageDescriptorFor(objectName, stripName, null, returnDefaultOnFail); } public static ImageDescriptor getImageDescriptorFor(String Name, boolean stripName, Object object, boolean returnDefaultOnFail) { String objectName; int direction; InterfaceOperation_c interfaceOperation; InterfaceSignal_c interfaceSignal; ProvidedOperation_c providedOperation; ProvidedSignal_c providedSignal; RequiredOperation_c requiredOperation; RequiredSignal_c requiredSignal; if (object == null) { objectName = Name; if (stripName) { if (objectName.lastIndexOf('.') != -1) { objectName = objectName.substring(objectName.lastIndexOf('.') + 1); } } } else { objectName = object.getClass().getName(); if (objectName.lastIndexOf('.') != -1) { objectName = objectName.substring(objectName.lastIndexOf('.') + 1); } objectName = extendNameIfNecessary(object, objectName); } ImageDescriptor descriptor = null; if (objectName.equals("SystemModel_c")) { descriptor = getImageDescriptor("metadata/System.gif"); } else if (objectName.equals("Domain_c")) { descriptor = getImageDescriptor("metadata/Domain.gif"); } else if (objectName.equals("Subsystem_c")) { descriptor = getImageDescriptor("metadata/Subsystem.gif"); } else if (objectName.equals("ModelClass_c")) { descriptor = getImageDescriptor("metadata/Class.gif"); } else if (objectName.equals("FunctionPackage_c")) { descriptor = getImageDescriptor("metadata/FunctionPackage.gif"); } else if (objectName.equals("Function_c")) { descriptor = getImageDescriptor("metadata/Function.gif"); } else if (objectName.equals("FunctionParameter_c")) { descriptor = getImageDescriptor("metadata/FunctionParameter.gif"); } else if (objectName.equals("Operation_c")) { descriptor = getImageDescriptor("metadata/Operation.gif"); } else if (objectName.equals("OperationParameter_c")) { descriptor = getImageDescriptor("metadata/OperationParameter.gif"); } else if (objectName.equals("InstanceStateMachine_c")) { descriptor = getImageDescriptor("metadata/InstanceStateChart.gif"); } else if (objectName.equals("ClassStateMachine_c")) { descriptor = getImageDescriptor("metadata/ClassStateChart.gif"); } else if (objectName.equals("StateMachineState_c")) { descriptor = getImageDescriptor("metadata/State.gif"); } else if (objectName.equals("StateMachineEvent_c")) { descriptor = getImageDescriptor("metadata/Event.gif"); } else if (objectName.equals("StateMachineEventDataItem_c")) { descriptor = getImageDescriptor("metadata/EventData.gif"); } else if (objectName.equals("Attribute_c")) { descriptor = getImageDescriptor("metadata/Attribute.gif"); } else if (objectName.equals("DataType_c")) { descriptor = getImageDescriptor("metadata/DataType.gif"); } else if (objectName.equals("Enumerator_c")) { descriptor = getImageDescriptor("metadata/Enumerator.gif"); } else if (objectName.equals("ExternalEntity_c")) { descriptor = getImageDescriptor("metadata/ExternalEntity.gif"); } else if (objectName.equals("Bridge_c")) { descriptor = getImageDescriptor("metadata/Bridge.gif"); } else if (objectName.equals("BridgeParameter_c")) { descriptor = getImageDescriptor("metadata/BridgeParameter.gif"); } else if (objectName.equals("Association_c")) { descriptor = getImageDescriptor("metadata/Association.gif"); } else if (objectName.equals("ImportedClass_c")) { descriptor = getImageDescriptor("metadata/ImportedClass.gif"); } else if (objectName.equals("ClassIdentifierAttribute_c")) { descriptor = getImageDescriptor("metadata/Identifier.gif"); } else if (objectName.equals("DerivedBaseAttribute_c")) { descriptor = getImageDescriptor("metadata/DerivedAttribute.gif"); } else if (objectName.equals("AttributeReferenceInClass_c")) { descriptor = getImageDescriptor("metadata/Reference.gif"); } else if (objectName.equals("ClassAsSimpleParticipant_c")) { descriptor = getImageDescriptor("metadata/AssociationParticipantEnd.gif"); } else if (objectName.equals("ClassAsSimpleFormalizer_c")) { descriptor = getImageDescriptor("metadata/AssociationFormalizerEnd.gif"); } else if (objectName.equals("ClassAsAssociatedOneSide_c")) { descriptor = getImageDescriptor("metadata/AssociativeOneEnd.gif"); } else if (objectName.equals("ClassAsAssociatedOtherSide_c")) { descriptor = getImageDescriptor("metadata/AssociativeOtherEnd.gif"); } else if (objectName.equals("ClassAsLink_c")) { descriptor = getImageDescriptor("metadata/Associative.gif"); } else if (objectName.equals("ClassAsSupertype_c")) { descriptor = getImageDescriptor("metadata/Supertype.gif"); } else if (objectName.equals("ClassAsSubtype_c")) { descriptor = getImageDescriptor("metadata/Subtype.gif"); } else if (objectName.equals("ClassAsDerivedOneSide_c")) { descriptor = getImageDescriptor("metadata/DerivedOneEnd.gif"); } else if (objectName.equals("ClassAsDerivedOtherSide_c")) { descriptor = getImageDescriptor("metadata/DerivedOtherEnd.gif"); } else if (objectName.equals("Action_c")) { descriptor = getImageDescriptor("metadata/StateAction.gif"); } else if (objectName.equals("EventIgnored_c")) { descriptor = getImageDescriptor("metadata/EventIgnored.gif"); } else if (objectName.equals("CantHappen_c")) { descriptor = getImageDescriptor("metadata/EventCantHappen.gif"); } else if (objectName.equals("StateEventMatrixEntry_c")) { descriptor = getImageDescriptor("metadata/StateEventMatrixEntry.gif"); } else if (objectName.equals("DataTypePackage_c")) { descriptor = getImageDescriptor("metadata/DataTypePackage.gif"); } else if (objectName.equals("ExternalEntityPackage_c")) { descriptor = getImageDescriptor("metadata/ExternalEntityPackage.gif"); } else if (objectName.equals("UserDataType_c")) { descriptor = getImageDescriptor("metadata/UserDefinedDataType.gif"); } else if (objectName.equals("CoreDataType_c")) { descriptor = getImageDescriptor("metadata/CoreDataType.gif"); } else if (objectName.equals("EnumerationDataType_c")) { descriptor = getImageDescriptor("metadata/Enumeration.gif"); } else if (objectName.equals("DerivedAssociation_c")) { descriptor = getImageDescriptor("metadata/DerivedAssociation.gif"); } else if (objectName.equals("ReferentialAttribute_c")) { descriptor = getImageDescriptor("metadata/ReferentialAttribute.gif"); } else if (objectName.equals("NonLocalEvent_c")) { descriptor = getImageDescriptor("metadata/NonLocalEvent.gif"); } else if (objectName.equals("ExternalEntityEventData_c")) { descriptor = getImageDescriptor("metadata/ExternalEntityEventData.gif"); } else if (objectName.equals("Sequence_c")) { descriptor = getImageDescriptor("metadata/SequencePackage.gif"); } else if (objectName.equals("ClassInstanceParticipant_c")) { descriptor = getImageDescriptor("metadata/Instance.gif"); } else if (objectName.equals("InstanceAttributeValue_c")) { descriptor = getImageDescriptor("metadata/Attribute.gif"); } else if (objectName.equals("ExternalEntityParticipant_c")) { descriptor = getImageDescriptor("metadata/ImportedExternalEntity.gif"); } else if (objectName.equals("FunctionPackageParticipant_c")) { descriptor = getImageDescriptor("metadata/ImportedFunctionPackage.gif"); } else if (objectName.equals("PackageParticipant_c")) { descriptor = getImageDescriptor("metadata/Package.gif"); } else if (objectName.equals("ClassParticipant_c")) { descriptor = getImageDescriptor("metadata/ImportedClass.gif"); } else if (objectName.equals("Lifespan_c")) { descriptor = getImageDescriptor("metadata/Lifespan.gif"); } else if (objectName.equals("ClassParticipantAttribute_c")) { descriptor = getImageDescriptor("metadata/Attribute.gif"); } else if (objectName.equals("TimingMark_c")) { descriptor = getImageDescriptor("metadata/TimingMark.gif"); } else if (objectName.equals("TimeSpan_c")) { descriptor = getImageDescriptor("metadata/TimeSpan.gif"); } else if (objectName.equals("SynchronousMessage_c")) { descriptor = getImageDescriptor("metadata/SynchronousMessage.gif"); } else if (objectName.equals("AsynchronousMessage_c")) { descriptor = getImageDescriptor("metadata/AsynchronousMessage.gif"); } else if (objectName.equals("MessageArgument_c")) { descriptor = getImageDescriptor("metadata/OperationParameter.gif"); } else if (objectName.equals("MessageArgument_c")) { descriptor = getImageDescriptor("metadata/OperationParameter.gif"); } else if (objectName.equals("InstanceAttributeValue_c")) { descriptor = getImageDescriptor("metadata/Attribute.gif"); } else if (objectName.equals("ActorParticipant_c")) { descriptor = getImageDescriptor("metadata/Actor.gif"); } else if (objectName.equals("ReturnMessage_c")) { descriptor = getImageDescriptor("metadata/ReturnMessage.gif"); } else if (objectName.equals("Communication_c")) { descriptor = getImageDescriptor("metadata/Communication.gif"); } else if (objectName.equals("CommunicationLink_c")) { descriptor = getImageDescriptor("metadata/Association.gif"); } else if (objectName.equals("UseCaseDiagram_c")) { descriptor = getImageDescriptor("metadata/UseCasePackage.gif"); } else if (objectName.equals("UseCaseParticipant_c")) { descriptor = getImageDescriptor("metadata/UseCase.gif"); } else if (objectName.equals("BinaryAssociation_c")) { descriptor = getImageDescriptor("metadata/Association.gif"); } else if (objectName.equals("Generalization_c")) { descriptor = getImageDescriptor("metadata/Generalization.gif"); } else if (objectName.equals("Include_c")) { descriptor = getImageDescriptor("metadata/Include.gif"); } else if (objectName.equals("Extend_c")) { descriptor = getImageDescriptor("metadata/Extend.gif"); } else if (objectName.equals("Activity_c")) { descriptor = getImageDescriptor("metadata/Activity.gif"); } else if (objectName.equals("ForkJoinNode_c")) { descriptor = getImageDescriptor("metadata/ForkJoinNode.gif"); } else if (objectName.equals("InitialNode_c")) { descriptor = getImageDescriptor("metadata/InitialNode.gif"); } else if (objectName.equals("ActivityEdge_c")) { descriptor = getImageDescriptor("metadata/ActivityEdge.gif"); } else if (objectName.equals("ActivityFinalNode_c")) { descriptor = getImageDescriptor("metadata/ActivityFinalNode.gif"); } else if (objectName.equals("FlowFinalNode_c")) { descriptor = getImageDescriptor("metadata/FlowFinalNode.gif"); } else if (objectName.equals("ActivityDiagramAction_c")) { descriptor = getImageDescriptor("metadata/GenericAction.gif"); } else if (objectName.equals("DecisionMergeNode_c")) { descriptor = getImageDescriptor("metadata/DecisionMergeNode.gif"); } else if (objectName.equals("ObjectNode_c")) { descriptor = getImageDescriptor("metadata/ObjectNode.gif"); } else if (objectName.equals("AcceptEventAction_c")) { descriptor = getImageDescriptor("metadata/AcceptEvent.gif"); } else if (objectName.equals("SendSignal_c")) { descriptor = getImageDescriptor("metadata/SendSignal.gif"); } else if (objectName.equals("ActivityPartition_c")) { descriptor = getImageDescriptor("metadata/ActivityPartition.gif"); } else if (objectName.equals("AcceptTimeEventAction_c")) { descriptor = getImageDescriptor("metadata/AcceptTimeEvent.gif"); } else if (objectName.equals("ComponentPackage_c")) { descriptor = getImageDescriptor("metadata/ComponentPackage.gif"); } else if (objectName.equals("Component_c")) { descriptor = getImageDescriptor("metadata/Component.gif"); } else if (objectName.equals("ComponentReference_c")) { descriptor = getImageDescriptor("metadata/ImportedComponent.gif"); } else if (objectName.equals("Provision_c")) { descriptor = getImageDescriptor("metadata/Provision.gif"); } else if (objectName.equals("Requirement_c")) { descriptor = getImageDescriptor("metadata/Requirement.gif"); } else if (objectName.equals("InterfacePackage_c")) { descriptor = getImageDescriptor("metadata/InterfacePackage.gif"); } else if (objectName.equals("Interface_c")) { descriptor = getImageDescriptor("metadata/Interface.gif"); } else if (objectName.equals("InterfaceSignal_cClientServer")) { descriptor = getImageDescriptor("metadata/toProviderSignal.gif"); } else if (objectName.equals("InterfaceSignal_cServerClient")) { descriptor = getImageDescriptor("metadata/fromProviderSignal.gif"); } // else if(objectName.equals("InterfaceSignal_cBiDirectional")) { // descriptor = getImageDescriptor("metadata/bidirectionalSignal.gif"); // } else if (objectName.equals("InterfaceOperation_cClientServer")) { descriptor = getImageDescriptor("metadata/toProviderOperation.gif"); } else if (objectName.equals("InterfaceOperation_cServerClient")) { descriptor = getImageDescriptor("metadata/fromProviderOperation.gif"); } // else if(objectName.equals("InterfaceOperation_cBiDirectional")) { // descriptor = getImageDescriptor("metadata/bidirectionalOperation.gif"); // } else if (objectName.equals("PropertyParameter_c")) { descriptor = getImageDescriptor("metadata/PropertyParameter.gif"); } else if (objectName.equals("RequiredOperation_cClientServer")) { descriptor = getImageDescriptor("metadata/outgoingOperation.gif"); } else if (objectName.equals("RequiredOperation_cServerClient")) { descriptor = getImageDescriptor("metadata/incomingOperation.gif"); } else if (objectName.equals("RequiredOperation_c")) { descriptor = getImageDescriptor("metadata/RequiredOperation.gif"); } // else if(objectName.equals("RequiredOperation_cBiDirectional")) { // descriptor = getImageDescriptor("metadata/InOutOperation.gif"); // } else if (objectName.equals("RequiredSignal_cClientServer")) { descriptor = getImageDescriptor("metadata/outgoingSignal.gif"); } else if (objectName.equals("RequiredSignal_cServerClient")) { descriptor = getImageDescriptor("metadata/incomingSignal.gif"); } else if (objectName.equals("RequiredSignal_c")) { descriptor = getImageDescriptor("metadata/RequiredSignal.gif"); } // else if(objectName.equals("RequiredSignal_cBiDirectional")) { // descriptor = getImageDescriptor("metadata/InOutSignal.gif"); // } else if (objectName.equals("ProvidedOperation_cClientServer")) { descriptor = getImageDescriptor("metadata/incomingOperation.gif"); } else if (objectName.equals("ProvidedOperation_cServerClient")) { descriptor = getImageDescriptor("metadata/outgoingOperation.gif"); } else if (objectName.equals("ProvidedOperation_c")) { descriptor = getImageDescriptor("metadata/ProvidedOperation.gif"); } // else if(objectName.equals("ProvidedOperation_cBiDirectional")) { // descriptor = getImageDescriptor("metadata/InOutOperation.gif"); // } else if (objectName.equals("ProvidedSignal_cClientServer")) { descriptor = getImageDescriptor("metadata/incomingSignal.gif"); } else if (objectName.equals("ProvidedSignal_cServerClient")) { descriptor = getImageDescriptor("metadata/outgoingSignal.gif"); } else if (objectName.equals("ProvidedSignal_c")) { descriptor = getImageDescriptor("metadata/ProvidedSignal.gif"); } // else if(objectName.equals("ProvidedSignal_cBiDirectional")) { // descriptor = getImageDescriptor("metadata/InOutSignal.gif"); // } else if (objectName.equals("Instance_c")) { descriptor = getImageDescriptor("metadata/InstanceOfClass.gif"); } else if (objectName.equals("AttributeValue_c")) { descriptor = getImageDescriptor("metadata/Attribute.gif"); } else if (objectName.equals("PendingEvent_c")) { descriptor = getImageDescriptor("metadata/Event.gif"); } else if (objectName.equals("StructuredDataType_c")) { descriptor = getImageDescriptor("metadata/StructuredDataType.gif"); } else if (objectName.equals("StructureMember_c")) { descriptor = getImageDescriptor("metadata/StructuredDataTypeMember.gif"); } else if (objectName.equals("Port_c")) { descriptor = getImageDescriptor("metadata/Port.gif"); } else if (objectName.equals("ImportedProvision_c")) { descriptor = getImageDescriptor("metadata/Provision.gif"); } else if (objectName.equals("ImportedRequirement_c")) { descriptor = getImageDescriptor("metadata/Requirement.gif"); } else if (objectName.equals("Transition_c")) { descriptor = getImageDescriptor("metadata/Transition.gif"); } else if (objectName.equals("ComponentInstance_c")) { descriptor = getImageDescriptor("metadata/InstanceOfComponent.gif"); } else if (objectName.equals("ComponentParticipant_c")) { descriptor = getImageDescriptor("metadata/Component.gif"); } else if (objectName.equals("Package_c")) { descriptor = getImageDescriptor("metadata/Package.gif"); } else if (objectName.equals("LinkParticipation_c")) { descriptor = getImageDescriptor("metadata/Association.gif"); } else if (objectName.equals("ConstantSpecification_c")) { descriptor = getImageDescriptor("metadata/ConstantSpecification.gif"); } else if (objectName.equals("LiteralSymbolicConstant_c")) { descriptor = getImageDescriptor("metadata/Enumerator.gif"); } else if (objectName.equals("SymbolicConstant_c")) { descriptor = getImageDescriptor("metadata/Enumerator.gif"); } else if (objectName.equals("Satisfaction_c")) { descriptor = getImageDescriptor("metadata/Satisfaction.gif"); } else if (objectName.equals("NewBaseAttribute_c")) { descriptor = getImageDescriptor("metadata/Attribute.gif"); } else if (objectName.equals("PolymorphicEvent_c")) { descriptor = getImageDescriptor("metadata/Event.gif"); } else if (objectName.equals("ReferredToIdentifierAttribute_c")) { descriptor = getImageDescriptor("metadata/ReferentialAttribute.gif"); } else if (objectName.equals("Delegation_c")) { descriptor = getImageDescriptor("metadata/Delegation.gif"); } else if (objectName.equals("SemEvent_c")) { descriptor = getImageDescriptor("metadata/Event.gif"); } else if (objectName.equals("InformalSynchronousMessage_c")) { descriptor = getImageDescriptor("metadata/Attribute.gif"); } else if (objectName.equals("InformalAsynchronousMessage_c")) { descriptor = getImageDescriptor("metadata/Attribute.gif"); } else if (objectName.equals("FunctionMessage_c")) { descriptor = getImageDescriptor("metadata/Function.gif"); } else if (objectName.equals("BridgeMessage_c")) { descriptor = getImageDescriptor("metadata/Bridge.gif"); } else if (objectName.equals("OperationMessage_c")) { descriptor = getImageDescriptor("metadata/Operation.gif"); } else if (objectName.equals("InterfaceOperationMessage_c")) { descriptor = getImageDescriptor("metadata/InterfaceOperation.gif"); } else if (objectName.equals("EventMessage_c")) { descriptor = getImageDescriptor("metadata/Event.gif"); } else if (objectName.equals("SignalMessage_c")) { descriptor = getImageDescriptor("metadata/InterfaceSignal.gif"); } else if (objectName.equals("InformalArgument_c")) { descriptor = getImageDescriptor("metadata/Operation.gif"); } else if (objectName.equals("CreationTransition_c")) { descriptor = getImageDescriptor("metadata/Transition.gif"); } else if (objectName.equals("NewOperation")) { String v_direction = Pref_c.Getstring("bridgepoint_prefs_message_direction"); if ((v_direction.equals("from provider"))) descriptor = getImageDescriptor("metadata/fromProviderOperation.gif"); else // To Provider descriptor = getImageDescriptor("metadata/toProviderOperation.gif"); //else /* bidirectional */ //descriptor = getImageDescriptor("metadata/bidirectionalOperation.gif"); } else if (objectName.equals("NewSignal")) { String v_direction = Pref_c.Getstring("bridgepoint_prefs_message_direction"); if ((v_direction.equals("from provider"))) descriptor = getImageDescriptor("metadata/fromProviderSignal.gif"); else // To Provider descriptor = getImageDescriptor("metadata/toProviderSignal.gif"); //else /* bidirectional */ //descriptor = getImageDescriptor("metadata/bidirectionalSignal.gif"); } else { if (returnDefaultOnFail) { descriptor = getImageDescriptor("package_obj.gif"); } } return descriptor; } public static Image getImageFor(String objectName, boolean stripName) { return getImageFor(objectName, stripName, true); } public static Image getImageFor(String objectName, boolean stripName, boolean returnDefaultOnFail) { return getImageFor(objectName, stripName, null, returnDefaultOnFail); } public static Image getImageFor(String objectName, boolean stripName, Object object, boolean returnDefaultOnFail) { if (stripName) { if (objectName.lastIndexOf('.') != -1) objectName = objectName.substring(objectName.lastIndexOf('.') + 1); } objectName = extendNameIfNecessary(object, objectName); Image image = getStaticImageRegistry().get(objectName); if (image == null) { ImageDescriptor descriptor = getImageDescriptorFor(objectName, false, object, returnDefaultOnFail); if (descriptor == null) { return null; } else { image = descriptor.createImage(); getStaticImageRegistry().put(objectName, image); } } return image; } private static String extendNameIfNecessary(Object object, String name) { int dir = Ifdirectiontype_c.OOA_UNINITIALIZED_ENUM; if (object instanceof InterfaceOperation_c) { dir = ((InterfaceOperation_c) object).getDirection(); } if (object instanceof InterfaceSignal_c) { dir = ((InterfaceSignal_c) object).getDirection(); } if (object instanceof ProvidedOperation_c) { dir = ((ProvidedOperation_c) object).Getmessagedirection(); } if (object instanceof ProvidedSignal_c) { dir = ((ProvidedSignal_c) object).Getmessagedirection(); } if (object instanceof RequiredOperation_c) { dir = ((RequiredOperation_c) object).Getmessagedirection(); } if (object instanceof RequiredSignal_c) { dir = ((RequiredSignal_c) object).Getmessagedirection(); } if (dir == Ifdirectiontype_c.ClientServer) { name += "ClientServer"; } if (dir == Ifdirectiontype_c.ServerClient) { name += "ServerClient"; } //if (dir == Ifdirectiontype_c.BiDirectional) { // name += "BiDirectional"; //} return name; } class ProjectListener extends ResourceChangeListener implements IResourceDeltaVisitor { @Override public boolean visit(IResourceDelta delta) throws CoreException { IResource resource = delta.getResource(); if (resource instanceof IProject) { if (delta.getKind() == IResourceDelta.ADDED) { if ((delta.getFlags() & IResourceDelta.MOVED_FROM) != IResourceDelta.MOVED_FROM) { for (IPreferenceChangeListener listener : projectPreferenceListeners) { addProjectPreferenceListenerToProject((IProject) resource, listener); return false; } } } if ((delta.getFlags() & IResourceDelta.OPEN) != 0) { // this covers the case where a project was opened IProject project = (IProject) resource; if (project.isOpen()) { for (IPreferenceChangeListener listener : projectPreferenceListeners) { addProjectPreferenceListenerToProject((IProject) resource, listener); return false; } } } } else { return true; } return false; } @Override public void resourceChanged(IResourceChangeEvent event) { if (event.getDelta() == null) { if (event.getType() == IResourceChangeEvent.PRE_DELETE || event.getType() == IResourceChangeEvent.PRE_CLOSE) { if (event.getResource() != null && event.getResource() instanceof IProject) { for (IPreferenceChangeListener listener : projectPreferenceListeners) { removeProjectPreferenceListenerFromProject((IProject) event.getResource(), listener); return; } } } // if there is no delta and it is not a pre-delete // event, then just ignore return; } try { event.getDelta().accept(this); } catch (CoreException e) { logError("Unable to visit resource delta.", e); } } } /* (non-Javadoc) * @see org.osgi.framework.BundleActivator#start(org.osgi.framework.BundleContext) */ public void start(BundleContext context) throws Exception { super.start(context); ComponentResourceListener synchronizer = ComponentResourceListener.getDefaultInstance(); ResourcesPlugin.getWorkspace().addResourceChangeListener(synchronizer, IResourceChangeEvent.POST_CHANGE); problemListener = new ProblemModelChangeListener(); Ooaofooa.addModelChangeListenerToAll(problemListener); projectListener = new ProjectListener(); ResourcesPlugin.getWorkspace().addResourceChangeListener(projectListener); } public void stop(BundleContext context) throws Exception { Ooaofooa.removeModelChangeListenerFromAll(problemListener); Ooaofooa.shutdown(); DelayedMarkerJob.internal_cancel(); for (IPreferenceChangeListener listener : projectPreferenceListeners) { removeProjectPreferenceListener(listener); } projectPreferenceListeners.clear(); ResourcesPlugin.getWorkspace().removeResourceChangeListener(projectListener); super.stop(context); } /** * Returns the plugin's delete action, */ public static Action getDeleteAction() { if (deleteAction == null) { deleteAction = new DeleteAction(getImageDescriptor("delete_edit.gif")); //$NON-NLS-1$ } return deleteAction; } /** * Returns the plugin's rename action, */ public static Action getRenameAction(TreeViewer viewer) { RenameAction renameAction = null; for (Iterator i = renameActions.iterator(); i.hasNext();) { renameAction = (RenameAction) i.next(); if (renameAction.getTree().equals(viewer.getTree())) { return renameAction; } } // no existing action was found, create a new one renameAction = new RenameAction(viewer); renameActions.add(renameAction); return renameAction; } public static void logError(String msg, Throwable e) { CorePlugin cp = getDefault(); // plugin is null when running unit tests if (cp != null) { Status status = new Status(IStatus.ERROR, getName(), IStatus.ERROR, msg, e); cp.getLog().log(status); } else { System.err.println(msg); if (e != null) { e.printStackTrace(); } } } public static void logResourceActivity(IResourceDelta delta) { String resourceLogEnabled = System.getProperty("com.mentor.bp.nucleus.logResourceActivity.enabled"); if (resourceLogEnabled != null) { Throwable thr = new Throwable(); thr.setStackTrace(Thread.currentThread().getStackTrace()); ResourceActivityVisitor rav = new ResourceActivityVisitor(); try { delta.accept(rav); } catch (CoreException ce) { // Do nothing this should never fail } if (!rav.getResult().isEmpty()) { String message = "Resources changed: " + delta.getFullPath() + "\n" + rav.getResult(); CorePlugin.logError(message, thr); } } } private static final boolean caseInsensitive = new File("a").compareTo(new File("A")) == 0; //$NON-NLS-1$ //$NON-NLS-2$ public static boolean osIsCaseInsensitive() { return caseInsensitive; } /** * Returns the name of this plug-in. This method exists because this * plug-in's bundle, from which callers would normally obtain the name, * is not yet associated with this plug-in until partway through this * plug-in's initialization. */ public static String getName() { // if this plug-in has an associated bundle CorePlugin plugin = getDefault(); Bundle bundle = plugin.getBundle(); if (bundle != null) { // return the name supplied by the bundle return bundle.getSymbolicName(); } // otherwise, return a default name return "com.mentor.nucleus.bp.core"; //$NON-NLS-1$ } public static void setOut(PrintStream out) { CorePlugin.out = out; } public static void setErr(PrintStream err) { CorePlugin.err = err; } /** * Determine if parse should be done. The user may be prompted to * do the parse, so this method must be executed in the UI thread. * * @return true if parse should be done */ public boolean getParseAllOnResourceChange() { IPreferenceStore store = getPreferenceStore(); String option = store.getString(BridgePointPreferencesStore.PARSE_ALL_ON_RESOURCE_CHANGE); if (option.equals(MessageDialogWithToggle.ALWAYS)) { return true; } else if (option.equals(MessageDialogWithToggle.NEVER)) { return false; } MessageDialogWithToggle m = MessageDialogWithToggle.openYesNoQuestion( PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell(), "Parse All Activities", "Import Complete, parse all action language?", "&Remember my decision", false, store, BridgePointPreferencesStore.PARSE_ALL_ON_RESOURCE_CHANGE); int result = m.getReturnCode(); switch (result) { // yes, ok case IDialogConstants.YES_ID: case IDialogConstants.OK_ID: return true; // no case IDialogConstants.NO_ID: return false; } // default is to parse return true; } /** * Sets 'parse all on resource change' to "Always" * Used by unit tests * */ public static void enableParseAllOnResourceChange() { IPreferenceStore store = getDefault().getPreferenceStore(); store.setValue(BridgePointPreferencesStore.PARSE_ALL_ON_RESOURCE_CHANGE, MessageDialogWithToggle.ALWAYS); } /** * Sets 'parse all on resource change' to "Never" * Used by unit tests * */ public static void disableParseAllOnResourceChange() { IPreferenceStore store = getDefault().getPreferenceStore(); store.setValue(BridgePointPreferencesStore.PARSE_ALL_ON_RESOURCE_CHANGE, MessageDialogWithToggle.NEVER); } /** * Parses all activities in domain using monitor * The method uses reflection to prevent an explicit circular dependency * on the com.mentor.nucleus.bp.ui.text package. */ public static void parseAll(Domain_c domain, IProgressMonitor monitor) { try { Bundle ui_text = Platform.getBundle("com.mentor.nucleus.bp.ui.text");//$NON-NLS-1$ Class factoryClass = ui_text.loadClass("com.mentor.nucleus.bp.ui.text.activity.AllActivityModifier"); //$NON-NLS-1$ // find the constructor that takes domain and monitor as parameters Class[] arg_types = new Class[] { Domain_c.class, IProgressMonitor.class }; Constructor ctor = factoryClass.getDeclaredConstructor(arg_types); // invoke the constructor to create an instance Object[] args = new Object[] { domain, monitor }; IAllActivityModifier aam = (IAllActivityModifier) ctor.newInstance(args); aam.processAllActivities(IAllActivityModifier.PARSE); } catch (ClassNotFoundException cnf) { CorePlugin.logError("Problem loading activity parser ", cnf); } catch (IllegalAccessException i) { CorePlugin.logError("Problem loading activity parser ", i); } catch (InstantiationException i) { CorePlugin.logError("Problem loading activity parser ", i); } catch (InvocationTargetException e) { CorePlugin.logError("Problem running activity parser ", e); } catch (SecurityException e) { CorePlugin.logError("Problem running activity parser ", e); } catch (NoSuchMethodException e) { CorePlugin.logError("Problem running activity parser ", e); } } /** * Parses all given activities using monitor * The method uses reflection to prevent an explicit circular dependency * on the com.mentor.nucleus.bp.ui.text package. */ public static void parseAllActions(ModelRoot root, Object[] activities, IProgressMonitor monitor) { try { Bundle ui_text = Platform.getBundle("com.mentor.nucleus.bp.ui.text");//$NON-NLS-1$ Class factoryClass = ui_text.loadClass("com.mentor.nucleus.bp.ui.text.activity.AllActivityModifier"); //$NON-NLS-1$ // find the constructor that takes the element and monitor as parameters Class[] arg_types = new Class[] { ModelRoot.class, Object[].class, IProgressMonitor.class }; Constructor ctor = factoryClass.getDeclaredConstructor(arg_types); // invoke the constructor to create an instance Object[] args = new Object[] { root, activities, monitor }; IAllActivityModifier aam = (IAllActivityModifier) ctor.newInstance(args); aam.processAllActivities(IAllActivityModifier.PARSE); } catch (ClassNotFoundException cnf) { CorePlugin.logError("Problem loading activity parser ", cnf); } catch (IllegalAccessException i) { CorePlugin.logError("Problem loading activity parser ", i); } catch (InstantiationException i) { CorePlugin.logError("Problem loading activity parser ", i); } catch (InvocationTargetException e) { CorePlugin.logError("Problem running activity parser ", e); } catch (SecurityException e) { CorePlugin.logError("Problem running activity parser ", e); } catch (NoSuchMethodException e) { CorePlugin.logError("Problem running activity parser ", e); } } /** * Returns the clipboard used throughout the execution * of BridgePoint */ public static Clipboard getSystemClipboard() { if (clipboard == null) { clipboard = new Clipboard(PlatformUI.getWorkbench().getDisplay()); } return clipboard; } private static Action importAction; private static Action exportAction; /** * Returns the import action used across the workbench * */ public static Action getResourceImportAction() { if (importAction == null) { importAction = new ImportResourcesAction(PlatformUI.getWorkbench().getActiveWorkbenchWindow()); } return importAction; } /** * Returns the export action used across the workbench */ public static Action getResourceExportAction() { if (exportAction == null) { exportAction = new ExportResourcesAction(PlatformUI.getWorkbench().getActiveWorkbenchWindow()); } return exportAction; } /** * Returns a filesystem path to the entry inside the core plugin */ public static String getEntryPath(String entry) throws IOException { URL url = getDefault().getBundle().getEntry(entry); URL resolvedURL = null; try { resolvedURL = FileLocator.resolve(url); } catch (IOException e) { throw e; } return resolvedURL.getPath(); } // map used to store old instance keys that have changed during // an import or paste private static HashMap<NonRootModelElement, Object> fImportedElementKeyMap = new HashMap<NonRootModelElement, Object>(); public static HashMap<NonRootModelElement, Object> getImportedElementKeyMap() { return fImportedElementKeyMap; } public static boolean decorationRequestsDisabled = false; public static void disableProblemMarkerDecorationRequests() { decorationRequestsDisabled = true; } public static void enableProblemMarkerDecorationRequests() { decorationRequestsDisabled = false; } public static boolean getProblemMarkerDecorationRequestsDisabled() { // there are currently no problem markers, therefore we do // not need decoration support return true; } private static List<IPasteListener> pasteListeners = new ArrayList<IPasteListener>(); public static List<IPasteListener> getPasteListeners() { return pasteListeners; } public static void addPasteListener(IPasteListener listener) { pasteListeners.add(listener); } public static void removePasteListener(IPasteListener listener) { pasteListeners.remove(listener); } public static PreferenceManager getProjectPreferenceManager(Preferences projectNode) { PreferenceManager pm = new PreferenceManager(); PreferenceNode pn = new BridgePointProjectReferencesPreferenceNode(projectNode); pm.addToRoot(pn); pn = new BridgePointProjectActionLanguagePreferenceNode(projectNode); pm.addToRoot(pn); return pm; } /** * This routine intializes the static member imageRegistry if it has not been initialized. * This is done here instead of in a member initializer for plugin start-up purposes. * When called from the command-line there may not be a workbench. */ private static ImageRegistry getStaticImageRegistry() { if (imageRegistry == null) { if (Display.getCurrent() != null) { imageRegistry = new ImageRegistry(Display.getCurrent()); } else { imageRegistry = new ImageRegistry(PlatformUI.getWorkbench().getDisplay()); } } return imageRegistry; } public static AbstractModelExportFactory getModelExportFactory() { return AbstractModelExportFactory.getInstance(); } /** * This method returns the current file persistence format version * for the current tool version. * * @return */ public static String getPersistenceVersion() { return PersistenceChangeTracker.getCurrentVersion().getPersistenceVersion(); } public static void addProjectForPEUpgrade(IProject project) { try { Bundle bundle = Platform.getBundle("com.mentor.nucleus.bp.io.mdl"); //$NON-NLS-1$ Class<?> clazz = bundle.loadClass("com.mentor.nucleus.bp.io.mdl.upgrade.UpgradeUtil"); //$NON-NLS-1$ Method method = clazz.getMethod("addProjectForPEUpgrade", new Class[] { IProject.class }); //$NON-NLS-1$ method.invoke(clazz, new Object[] { project }); } catch (ClassNotFoundException e) { CorePlugin.logError("Unable to perform model upgrade.", e); } catch (SecurityException e) { CorePlugin.logError("Unable to perform model upgrade.", e); } catch (NoSuchMethodException e) { CorePlugin.logError("Unable to perform model upgrade.", e); } catch (IllegalArgumentException e) { CorePlugin.logError("Unable to perform model upgrade.", e); } catch (IllegalAccessException e) { CorePlugin.logError("Unable to perform model upgrade.", e); } catch (InvocationTargetException e) { CorePlugin.logError("Unable to perform model upgrade.", e); } } public static void addProjectsForPEUpgrade(IProject[] projects) { try { Bundle bundle = Platform.getBundle("com.mentor.nucleus.bp.io.mdl"); //$NON-NLS-1$ Class<?> clazz = bundle.loadClass("com.mentor.nucleus.bp.io.mdl.upgrade.UpgradeUtil"); //$NON-NLS-1$ Method method = clazz.getMethod("addProjectsForPEUpgrade", new Class[] { IProject[].class }); //$NON-NLS-1$ method.invoke(clazz, new Object[] { projects }); } catch (ClassNotFoundException e) { CorePlugin.logError("Unable to perform model upgrade.", e); } catch (SecurityException e) { CorePlugin.logError("Unable to perform model upgrade.", e); } catch (NoSuchMethodException e) { CorePlugin.logError("Unable to perform model upgrade.", e); } catch (IllegalArgumentException e) { CorePlugin.logError("Unable to perform model upgrade.", e); } catch (IllegalAccessException e) { CorePlugin.logError("Unable to perform model upgrade.", e); } catch (InvocationTargetException e) { CorePlugin.logError("Unable to perform model upgrade.", e); } } private static List<IPreferenceChangeListener> projectPreferenceListeners = new ArrayList<IPreferenceChangeListener>(); public static void addProjectPreferenceListener(IPreferenceChangeListener listener) { projectPreferenceListeners.add(listener); addProjectPreferenceListenerToExistingProjects(listener); } private static void addProjectPreferenceListenerToExistingProjects(IPreferenceChangeListener listener) { IProject[] projects = ResourcesPlugin.getWorkspace().getRoot().getProjects(); for (IProject project : projects) { addProjectPreferenceListenerToProject(project, listener); } } private static void addProjectPreferenceListenerToProject(IProject project, IPreferenceChangeListener listener) { try { if (project.isAccessible() && project.hasNature(XtUMLNature.ID)) { IScopeContext projectScope = new ProjectScope(project); IEclipsePreferences projectNode = projectScope .getNode(BridgePointProjectPreferences.BP_PROJECT_PREFERENCES_ID); projectNode.addPreferenceChangeListener(listener); } } catch (CoreException e) { logError("Unable to determine if project has xtUML nature.", e); } } public static void removeProjectPreferenceListener(IPreferenceChangeListener listener) { removeProjectPreferenceListenerFromExistingProjects(listener); } private static void removeProjectPreferenceListenerFromExistingProjects(IPreferenceChangeListener listener) { IProject[] projects = ResourcesPlugin.getWorkspace().getRoot().getProjects(); for (IProject project : projects) { removeProjectPreferenceListenerFromProject(project, listener); } } private static void removeProjectPreferenceListenerFromProject(IProject project, IPreferenceChangeListener listener) { try { if (project.hasNature(XtUMLNature.ID)) { IScopeContext projectScope = new ProjectScope(project); IEclipsePreferences projectNode = projectScope .getNode(BridgePointProjectPreferences.BP_PROJECT_PREFERENCES_ID); projectNode.removePreferenceChangeListener(listener); } } catch (CoreException e) { logError("Unable to determine if project has xtUML nature.", e); } } }