package org.archstudio.eclipsedev.core; import java.util.Collections; import org.eclipse.core.runtime.Plugin; import org.osgi.framework.BundleContext; import org.archstudio.myx.eclipse.MyxEclipseUtils; import org.archstudio.myx.fw.EMyxInterfaceDirection; import org.archstudio.myx.fw.IMyxBrickDescription; import org.archstudio.myx.fw.IMyxInterfaceDescription; import org.archstudio.myx.fw.IMyxName; import org.archstudio.myx.fw.IMyxRuntime; import org.archstudio.myx.fw.MyxJavaClassBrickDescription; import org.archstudio.myx.fw.MyxJavaClassInterfaceDescription; import org.archstudio.myx.fw.MyxUtils; /** * The activator class controls the plug-in life cycle */ public class Activator extends Plugin { // The plug-in ID public static final String PLUGIN_ID = "org.archstudio.eclipsedev"; // The shared instance private static Activator plugin; /** * The constructor */ public Activator() { } /* * (non-Javadoc) * @see * org.eclipse.core.runtime.Plugins#start(org.osgi.framework.BundleContext) */ public void start(BundleContext context) throws Exception { super.start(context); plugin = this; startApplication(); } /* * (non-Javadoc) * @see * org.eclipse.core.runtime.Plugin#stop(org.osgi.framework.BundleContext) */ public void stop(BundleContext context) throws Exception { plugin = null; super.stop(context); } /** * Returns the shared instance * * @return the shared instance */ public static Activator getDefault() { return plugin; } private void startApplication() throws Exception { MyxEclipseUtils.register(); IMyxRuntime myxRuntime = MyxUtils.getDefaultImplementation().createRuntime(); myxRuntime.addBrickLoader(MyxUtils.createName("EclipseBrickLoader"), "org.archstudio.myx.eclipse.MyxEclipseBrickLoader", null); IMyxInterfaceDescription dataBindingInterfaceDescription = new MyxJavaClassInterfaceDescription(Collections .singleton("org.archstudio.dblgen.IDataBindingGenerator")); IMyxInterfaceDescription monitorInterfaceDescription = new MyxJavaClassInterfaceDescription(Collections .singleton("org.eclipse.emf.common.util.Monitor")); IMyxInterfaceDescription preferencesInterfaceDescription = new MyxJavaClassInterfaceDescription(Collections .singleton("org.eclipse.jface.preference.IPreferenceStore")); IMyxName dataBindingInterfaceName = MyxUtils.createName("databinding"); IMyxName monitorInterfaceName = MyxUtils.createName("monitor"); IMyxName preferencesInterfaceName = MyxUtils.createName("preferences"); IMyxBrickDescription dataBindingBrickDescription = new MyxJavaClassBrickDescription("org.archstudio.dblgen.core.DataBindingGeneratorMyxComponent"); IMyxName dataBindingBrickName = MyxUtils.createName("DataBinding"); IMyxBrickDescription preferencesADTBrickDescription = new MyxJavaClassBrickDescription("org.archstudio.preferencesadt.core.PreferencesADTMyxComponent"); IMyxName preferencesADTBrickName = MyxUtils.createName("PreferencesADT"); IMyxBrickDescription eclipseDevBrickDescription = new MyxJavaClassBrickDescription("org.archstudio.eclipsedev.core.EclipseDevMyxComponent"); IMyxName eclipseDevBrickName = MyxUtils.createName("EclipseDev"); IMyxBrickDescription eclipseDevPreferencesBrickDescription = new MyxJavaClassBrickDescription("org.archstudio.eclipsedev.core.prefs.EclipseDevPreferencesMyxComponent"); IMyxName eclipseDevPreferencesBrickName = MyxUtils.createName("EclipseDevPreferences"); myxRuntime.addBrick(MyxUtils.DEFAULT_PATH, dataBindingBrickName, dataBindingBrickDescription, null); myxRuntime.init(MyxUtils.DEFAULT_PATH, dataBindingBrickName); myxRuntime.addInterface(MyxUtils.DEFAULT_PATH, dataBindingBrickName, dataBindingInterfaceName, dataBindingInterfaceDescription, EMyxInterfaceDirection.IN); myxRuntime.addInterface(MyxUtils.DEFAULT_PATH, dataBindingBrickName, monitorInterfaceName, monitorInterfaceDescription, EMyxInterfaceDirection.OUT); myxRuntime.addBrick(MyxUtils.DEFAULT_PATH, eclipseDevBrickName, eclipseDevBrickDescription, null); myxRuntime.init(MyxUtils.DEFAULT_PATH, eclipseDevBrickName); myxRuntime.addInterface(MyxUtils.DEFAULT_PATH, eclipseDevBrickName, monitorInterfaceName, monitorInterfaceDescription, EMyxInterfaceDirection.IN); myxRuntime.addInterface(MyxUtils.DEFAULT_PATH, eclipseDevBrickName, preferencesInterfaceName, preferencesInterfaceDescription, EMyxInterfaceDirection.OUT); myxRuntime.addInterface(MyxUtils.DEFAULT_PATH, eclipseDevBrickName, dataBindingInterfaceName, dataBindingInterfaceDescription, EMyxInterfaceDirection.OUT); myxRuntime.addBrick(MyxUtils.DEFAULT_PATH, preferencesADTBrickName, preferencesADTBrickDescription, null); myxRuntime.init(MyxUtils.DEFAULT_PATH, preferencesADTBrickName); myxRuntime.addInterface(MyxUtils.DEFAULT_PATH, preferencesADTBrickName, preferencesInterfaceName, preferencesInterfaceDescription, EMyxInterfaceDirection.IN); myxRuntime.addBrick(MyxUtils.DEFAULT_PATH, eclipseDevPreferencesBrickName, eclipseDevPreferencesBrickDescription, null); myxRuntime.init(MyxUtils.DEFAULT_PATH, eclipseDevPreferencesBrickName); myxRuntime.addInterface(MyxUtils.DEFAULT_PATH, eclipseDevPreferencesBrickName, preferencesInterfaceName, preferencesInterfaceDescription, EMyxInterfaceDirection.OUT); myxRuntime.addWeld(myxRuntime.createWeld(MyxUtils.DEFAULT_PATH, eclipseDevBrickName, dataBindingInterfaceName, MyxUtils.DEFAULT_PATH, dataBindingBrickName, dataBindingInterfaceName)); myxRuntime.addWeld(myxRuntime.createWeld(MyxUtils.DEFAULT_PATH, eclipseDevBrickName, preferencesInterfaceName, MyxUtils.DEFAULT_PATH, preferencesADTBrickName, preferencesInterfaceName)); myxRuntime.addWeld(myxRuntime.createWeld(MyxUtils.DEFAULT_PATH, eclipseDevPreferencesBrickName, preferencesInterfaceName, MyxUtils.DEFAULT_PATH, preferencesADTBrickName, preferencesInterfaceName)); //TODO: Add an event pump here. myxRuntime.addWeld(myxRuntime.createWeld(MyxUtils.DEFAULT_PATH, dataBindingBrickName, monitorInterfaceName, MyxUtils.DEFAULT_PATH, eclipseDevBrickName, monitorInterfaceName)); myxRuntime.begin(MyxUtils.DEFAULT_PATH, dataBindingBrickName); myxRuntime.begin(MyxUtils.DEFAULT_PATH, preferencesADTBrickName); myxRuntime.begin(MyxUtils.DEFAULT_PATH, eclipseDevPreferencesBrickName); myxRuntime.begin(MyxUtils.DEFAULT_PATH, eclipseDevBrickName); } }