summaryrefslogtreecommitdiff
path: root/eclipse/Slice2javaPlugin/src/com/zeroc/slice2javaplugin/Activator.java
diff options
context:
space:
mode:
authorMark Spruiell <mes@zeroc.com>2009-02-04 11:02:43 -0800
committerMark Spruiell <mes@zeroc.com>2009-02-04 11:02:43 -0800
commitb083150945fefc12f294c4350e0ca476094dc332 (patch)
tree4fd2e6dc0bdcfb26f83bacaf5cbc1cce4eee6d1f /eclipse/Slice2javaPlugin/src/com/zeroc/slice2javaplugin/Activator.java
parentAdditional fixes for bug 3376 (diff)
downloadice-b083150945fefc12f294c4350e0ca476094dc332.tar.bz2
ice-b083150945fefc12f294c4350e0ca476094dc332.tar.xz
ice-b083150945fefc12f294c4350e0ca476094dc332.zip
adding eclipse plugin
Diffstat (limited to 'eclipse/Slice2javaPlugin/src/com/zeroc/slice2javaplugin/Activator.java')
-rw-r--r--eclipse/Slice2javaPlugin/src/com/zeroc/slice2javaplugin/Activator.java175
1 files changed, 175 insertions, 0 deletions
diff --git a/eclipse/Slice2javaPlugin/src/com/zeroc/slice2javaplugin/Activator.java b/eclipse/Slice2javaPlugin/src/com/zeroc/slice2javaplugin/Activator.java
new file mode 100644
index 00000000000..b0ba911f947
--- /dev/null
+++ b/eclipse/Slice2javaPlugin/src/com/zeroc/slice2javaplugin/Activator.java
@@ -0,0 +1,175 @@
+// **********************************************************************
+//
+// Copyright (c) 2003-2008 ZeroC, Inc. All rights reserved.
+//
+// This plug-in is provided to you under the terms and conditions
+// of the Eclipse Public License Version 1.0 ("EPL"). A copy of
+// the EPL is available at http://www.eclipse.org/legal/epl-v10.html.
+//
+// **********************************************************************
+
+package com.zeroc.slice2javaplugin;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.eclipse.core.resources.IWorkspaceRoot;
+import org.eclipse.core.resources.IncrementalProjectBuilder;
+import org.eclipse.core.resources.ResourcesPlugin;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Preferences;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.core.runtime.Preferences.IPropertyChangeListener;
+import org.eclipse.core.runtime.Preferences.PropertyChangeEvent;
+import org.eclipse.core.runtime.jobs.Job;
+import org.eclipse.jdt.core.IJavaModel;
+import org.eclipse.jdt.core.IJavaProject;
+import org.eclipse.jdt.core.JavaCore;
+import org.eclipse.jdt.core.JavaModelException;
+import org.eclipse.jface.resource.ImageDescriptor;
+import org.eclipse.ui.plugin.AbstractUIPlugin;
+import org.osgi.framework.BundleContext;
+
+import com.zeroc.slice2javaplugin.builder.Slice2JavaBuilder;
+import com.zeroc.slice2javaplugin.builder.Slice2JavaNature;
+import com.zeroc.slice2javaplugin.internal.IceClasspathContainerIntializer;
+import com.zeroc.slice2javaplugin.preferences.PluginPreferencePage;
+
+/**
+ * The activator class controls the plug-in life cycle
+ */
+public class Activator extends AbstractUIPlugin
+{
+
+ // The plug-in ID
+ public static final String PLUGIN_ID = "com.zeroc.Slice2JavaPlugin";
+
+ /**
+ * The constructor
+ */
+ public Activator()
+ {
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see
+ * org.eclipse.ui.plugin.AbstractUIPlugin#start(org.osgi.framework.BundleContext
+ * )
+ */
+ public void start(BundleContext context)
+ throws Exception
+ {
+ super.start(context);
+ _plugin = this;
+
+ // set the listener for the preference change
+ Preferences prefs = getPluginPreferences();
+ prefs.addPropertyChangeListener(new IPropertyChangeListener()
+ {
+ public List<IJavaProject> getSlice2JavaProjects(IJavaModel javaModel)
+ {
+ ArrayList<IJavaProject> pl = new ArrayList<IJavaProject>();
+ try
+ {
+ for(IJavaProject p : javaModel.getJavaProjects())
+ {
+ try
+ {
+ if(p.getProject().hasNature(Slice2JavaNature.NATURE_ID))
+ {
+ pl.add(p);
+ }
+ }
+ catch(CoreException e)
+ {
+ // The project isn't opened, or does not exist.
+ }
+ }
+ }
+ catch(JavaModelException jme)
+ {
+ }
+
+ return pl;
+ }
+ public void propertyChange(PropertyChangeEvent event)
+ {
+ String property = event.getProperty();
+ if(PluginPreferencePage.SDK_PATH.equals(property))
+ {
+ IWorkspaceRoot workspaceRoot = ResourcesPlugin.getWorkspace().getRoot();
+ IJavaModel javaModel = JavaCore.create(workspaceRoot);
+ List<IJavaProject> projects = getSlice2JavaProjects(javaModel);
+ String value = (String)event.getNewValue();
+ IceClasspathContainerIntializer.updateProjects(value, projects);
+ // Need to trigger a clean build of the projects.
+ for(final IJavaProject p : projects)
+ {
+ Job job = new Job("Rebuild")
+ {
+ protected IStatus run(IProgressMonitor monitor)
+ {
+ try
+ {
+ p.getProject().build(IncrementalProjectBuilder.FULL_BUILD, Slice2JavaBuilder.BUILDER_ID, null,
+ monitor);
+ }
+ catch(CoreException e)
+ {
+ return new Status(Status.ERROR, Activator.PLUGIN_ID, 0, "rebuild failed", e);
+ }
+ return Status.OK_STATUS;
+ }
+ };
+ job.setPriority(Job.BUILD);
+ job.schedule(); // start as soon as possible
+ }
+ }
+ }
+ });
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see
+ * org.eclipse.ui.plugin.AbstractUIPlugin#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;
+ }
+
+ /**
+ * Returns an image descriptor for the image file at the given plug-in
+ * relative path
+ *
+ * @param path
+ * the path
+ * @return the image descriptor
+ */
+ public static ImageDescriptor getImageDescriptor(String path)
+ {
+ return imageDescriptorFromPlugin(PLUGIN_ID, path);
+ }
+
+ // The shared instance
+ private static Activator _plugin;
+}