Java tutorial
/** * Licensed to Neo Technology under one or more contributor * license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright * ownership. Neo Technology licenses this file to you under * the Apache License, Version 2.0 (the "License"); you may * not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * KIND, either express or implied. See the License for the * specific language governing permissions and limitations * under the License. */ package org.neo4j.neoclipse; import org.eclipse.jface.action.IStatusLineManager; import org.eclipse.jface.preference.PreferenceDialog; import org.eclipse.ui.IActionBars; import org.eclipse.ui.IViewSite; import org.eclipse.ui.IWorkbench; import org.eclipse.ui.IWorkbenchPage; import org.eclipse.ui.IWorkbenchPart; import org.eclipse.ui.IWorkbenchPartSite; import org.eclipse.ui.IWorkbenchWindow; import org.eclipse.ui.PartInitException; import org.eclipse.ui.PlatformUI; import org.eclipse.ui.dialogs.PreferencesUtil; import org.eclipse.ui.plugin.AbstractUIPlugin; import org.neo4j.neoclipse.connection.Alias; import org.neo4j.neoclipse.connection.AliasManager; import org.neo4j.neoclipse.connection.ConnectionsView; import org.neo4j.neoclipse.graphdb.GraphDbServiceManager; import org.neo4j.neoclipse.graphdb.GraphDbServiceStatus; import org.neo4j.neoclipse.view.NeoGraphViewPart; import org.neo4j.neoclipse.view.UiHelper; import org.osgi.framework.BundleContext; /** * The activator class controls the plug-in life cycle. */ public class Activator extends AbstractUIPlugin { /** * The plug-in ID. */ public static final String PLUGIN_ID = "org.neo4j.neoclipse"; /** * The graphdb manager. */ private GraphDbServiceManager graphDbServiceManager; private AliasManager aliasManager; private ConnectionsView connectionsView; // Self register private NeoGraphViewPart neoGraphViewPart; // Self register /** * The shared instance. */ private static Activator PLUGIN; /** * Starts up the plug-in and initializes the neo service. */ @Override public void start(final BundleContext context) throws Exception { super.start(context); PLUGIN = this; graphDbServiceManager = new GraphDbServiceManager(); aliasManager = new AliasManager(); aliasManager.loadAliases(); } /** * Stops the plug-in and shuts down the neo4j service. */ @Override public void stop(final BundleContext context) throws Exception { graphDbServiceManager.shutdownGraphDbService(); graphDbServiceManager.stopExecutingTasks(); aliasManager.saveAliases(); PLUGIN = null; super.stop(context); } /** * Returns the shared instance. * * @return the shared instance */ public static Activator getDefault() { return PLUGIN; } /** * Returns the service manager. */ public GraphDbServiceManager getGraphDbServiceManager() { return graphDbServiceManager; } /** * Show the Neo4j preference page. * * @param filtered only show Neo4j properties when true * @return */ public int showPreferenceDialog(final boolean filtered) { PreferenceDialog pref = PreferencesUtil.createPreferenceDialogOn(null, "org.neo4j.neoclipse.preference.NeoPreferencePage", (filtered ? new String[] {} : null), null); if (pref != null) { return pref.open(); } return 1; } /** * Show the Neo4j Decorator preference page. * * @param filtered only show Neo4j properties when true * @return */ public int showDecoratorPreferenceDialog(final boolean filtered) { PreferenceDialog pref = PreferencesUtil.createPreferenceDialogOn(null, "org.neo4j.neoclipse.preference.NeoDecoratorPreferencePage", (filtered ? new String[] {} : null), null); if (pref != null) { return pref.open(); } return 1; } public AliasManager getAliasManager() { return aliasManager; } public ConnectionsView getConnectionsView() { return getConnectionsView(true); } private IWorkbenchPage getActivePage() { if (getWorkbench() != null && getWorkbench().getActiveWorkbenchWindow() != null) { return getWorkbench().getActiveWorkbenchWindow().getActivePage(); } return null; } public ConnectionsView getConnectionsView(boolean create) { if (connectionsView == null) { IWorkbenchPage page = getActivePage(); if (page != null) { connectionsView = (ConnectionsView) page.findView(ConnectionsView.class.getName()); if (connectionsView == null && create) { try { connectionsView = (ConnectionsView) page.showView(ConnectionsView.class.getName()); } catch (PartInitException e) { throw new RuntimeException(e); } } } } return connectionsView; } public void setConnectionsView(ConnectionsView connectionsView) { this.connectionsView = connectionsView; } public NeoGraphViewPart getNeoGraphViewPart() { if (neoGraphViewPart == null) { IWorkbenchPage page = getActivePage(); if (page != null) { neoGraphViewPart = (NeoGraphViewPart) page.findView(NeoGraphViewPart.class.getName()); if (neoGraphViewPart == null) { try { neoGraphViewPart = (NeoGraphViewPart) page.showView(NeoGraphViewPart.class.getName()); } catch (PartInitException e) { throw new RuntimeException(e); } } } } return neoGraphViewPart; } public void setNeoGraphViewPart(NeoGraphViewPart neoGraphViewPart) { this.neoGraphViewPart = neoGraphViewPart; } public void setStatusLineMessage(final String message) { UiHelper.asyncExec(new Runnable() { @Override public void run() { IWorkbench wb = PlatformUI.getWorkbench(); IWorkbenchWindow win = wb.getActiveWorkbenchWindow(); IWorkbenchPage page = win.getActivePage(); IWorkbenchPart part = page.getActivePart(); IWorkbenchPartSite site = part.getSite(); IViewSite vSite = (IViewSite) site; IActionBars actionBars = vSite.getActionBars(); if (actionBars == null) { return; } IStatusLineManager statusLineManager = actionBars.getStatusLineManager(); if (statusLineManager == null) { return; } statusLineManager.setMessage(message); } }); } public Alias getSelectedAlias() { return getConnectionsView().getSelectedAlias(); } public void fireServiceChangedEvent(GraphDbServiceStatus status) { getGraphDbServiceManager().fireServiceChangedEvent(status); } }