diff options
Diffstat (limited to 'jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/JptUiPlugin.java')
-rw-r--r-- | jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/JptUiPlugin.java | 226 |
1 files changed, 0 insertions, 226 deletions
diff --git a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/JptUiPlugin.java b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/JptUiPlugin.java deleted file mode 100644 index 4a686b8748..0000000000 --- a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/JptUiPlugin.java +++ /dev/null @@ -1,226 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2006, 2009 Oracle. 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: - * Oracle - initial API and implementation - ******************************************************************************/ -package org.eclipse.jpt.ui; - -import org.eclipse.core.runtime.IStatus; -import org.eclipse.core.runtime.Status; -import org.eclipse.jface.resource.ImageDescriptor; -import org.eclipse.jpt.core.JpaPlatform; -import org.eclipse.jpt.core.JptCorePlugin; -import org.eclipse.jpt.ui.internal.platform.JpaPlatformUiRegistry; -import org.eclipse.jpt.ui.navigator.JpaNavigatorProvider; -import org.eclipse.swt.SWT; -import org.eclipse.swt.graphics.Image; -import org.eclipse.swt.widgets.Control; -import org.eclipse.swt.widgets.Display; -import org.eclipse.swt.widgets.Event; -import org.eclipse.swt.widgets.Listener; -import org.eclipse.ui.plugin.AbstractUIPlugin; -import org.osgi.framework.BundleContext; - -/** - * Dali UI plug-in. - * <p> - * Provisional API: This interface is part of an interim API that is still - * under development and expected to change significantly before reaching - * stability. It is available at this early stage to solicit feedback from - * pioneering adopters on the understanding that any code that uses this API - * will almost certainly be broken (repeatedly) as the API evolves. - */ -@SuppressWarnings("nls") -public class JptUiPlugin - extends AbstractUIPlugin -{ - private final Listener focusListener; - - - // ********** constants ********** - - /** - * The plug-in identifier of JPA UI support (value {@value}). - */ - public static final String PLUGIN_ID = "org.eclipse.jpt.ui"; - public static final String PLUGIN_ID_ = PLUGIN_ID + '.'; - - private static final String FOCUS_DATA_KEY = PLUGIN_ID_ + "focus"; - private static final Object FOCUS_DATA = new Object(); - - - // ********** singleton ********** - - private static JptUiPlugin INSTANCE; - - /** - * Returns the singleton JPT UI plug-in. - */ - public static JptUiPlugin instance() { - return INSTANCE; - } - - - // ********** logging ********** - - public static void log(IStatus status) { - INSTANCE.getLog().log(status); - } - - public static void log(String msg) { - log(new Status(IStatus.ERROR, PLUGIN_ID, IStatus.OK, msg, null)); - } - - public static void log(Throwable throwable) { - log(new Status(IStatus.ERROR, PLUGIN_ID, IStatus.OK, throwable.getLocalizedMessage(), throwable)); - } - - - // ********** images ********** - - /** - * Return an image descriptor for the specified <code>.gif<code> - * file in the icons folder. - */ - public static ImageDescriptor getImageDescriptor(String key) { - if ( ! key.startsWith("icons/")) { - key = "icons/" + key; - } - if ( ! key.endsWith(".gif")) { - key = key + ".gif"; - } - return imageDescriptorFromPlugin(PLUGIN_ID, key); - } - - /** - * Return an image for the specified <code>.gif<code> - * file in the icons folder. - */ - public static Image getImage(String key) { - ImageDescriptor descriptor = getImageDescriptor(key); - return (descriptor == null) ? null : descriptor.createImage(); - } - - - // ********** construction ********** - - public JptUiPlugin() { - super(); - this.focusListener = this.buildFocusListener(); - if (INSTANCE != null) { - throw new IllegalStateException(); - } - INSTANCE = this; - } - - /** - * We are registered to receive only {@link SWT#FocusIn} events - */ - private Listener buildFocusListener() { - return new Listener() { - public void handleEvent(Event event) { - JptUiPlugin.this.focusIn((Control) event.widget); - } - }; - } - - - // ********** focus handling ********** - - /** - * This method is called whenever a "focus in" event is generated. - * If the control gaining focus is part of one of our composites (typically - * a JPA Details View), we stop listening to Java change events - * (and assume all changes to the Java model are generated by us). - * If the control gaining focus is *not* part of one of our composites, - * we start listening to the Java change events again. - */ - void focusIn(Control control) { - while (control != null) { - if (control.getData(FOCUS_DATA_KEY) == FOCUS_DATA) { - this.focusIn(); - return; - } - control = control.getParent(); - } - this.focusOut(); - } - - /** - * This method is called whenever a Dali UI control that affects Java - * source code gains the UI focus. When this happens we deactivate - * the Dali Java change listener so we ignore any changes to the Java - * source code that probably originated from Dali. This means we will miss - * any changes to the Java source code that is caused by non-UI activity; - * but, we hope, these changes are unrelated to JPA annotations etc. - * @see #focusOut() - */ - private void focusIn() { - JptCorePlugin.setJavaElementChangeListenerIsActive(false); - } - - /** - * This method is called whenever a non-Dali UI control gains the UI focus. - * When this happens we activate the Dali Java change listener so that we - * begin to keep the Dali model synchronized with the Java source code. - * @see #focusIn() - */ - private void focusOut() { - JptCorePlugin.setJavaElementChangeListenerIsActive(true); - } - - /** - * Tag the specified control so that whenever it (or any of its children, - * grandchildren, etc.) has the focus, the Dali model ignores any Java - * change events. This method is to be called when the control is first - * constructed. - */ - public void controlAffectsJavaSource(Control control) { - control.setData(FOCUS_DATA_KEY, FOCUS_DATA); - } - - - // ********** platform ********** - - /** - * Return the JPA platform UI corresponding to the specified JPA platform. - */ - public JpaPlatformUi getJpaPlatformUi(JpaPlatform jpaPlatform) { - return JpaPlatformUiRegistry.instance().getJpaPlatformUi(jpaPlatform.getId()); - } - - public JpaNavigatorProvider getJpaNavigatorProvider(JpaPlatform jpaPlatform) { - JpaPlatformUi platform = this.getJpaPlatformUi(jpaPlatform); - return (platform == null) ? null : platform.getNavigatorProvider(); - } - - - // ********** plug-in implementation ********** - - /** - * Register our SWT listener with the display so we receive notification - * of every "focus in" event. - */ - @Override - public void start(BundleContext context) throws Exception { - super.start(context); - Display.getDefault().addFilter(SWT.FocusIn, this.focusListener); - } - - /** - * Unregister our SWT listener with the display. - */ - @Override - public void stop(BundleContext context) throws Exception { - try { - Display.getDefault().removeFilter(SWT.FocusIn, this.focusListener); - } finally { - super.stop(context); - } - } - -} |