Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'target_explorer/plugins/org.eclipse.tcf.te.rcp.application/src/org/eclipse/tcf/te/rcp/application/ApplicationWorkbenchAdvisor.java')
-rw-r--r--target_explorer/plugins/org.eclipse.tcf.te.rcp.application/src/org/eclipse/tcf/te/rcp/application/ApplicationWorkbenchAdvisor.java167
1 files changed, 167 insertions, 0 deletions
diff --git a/target_explorer/plugins/org.eclipse.tcf.te.rcp.application/src/org/eclipse/tcf/te/rcp/application/ApplicationWorkbenchAdvisor.java b/target_explorer/plugins/org.eclipse.tcf.te.rcp.application/src/org/eclipse/tcf/te/rcp/application/ApplicationWorkbenchAdvisor.java
new file mode 100644
index 000000000..f16de5b36
--- /dev/null
+++ b/target_explorer/plugins/org.eclipse.tcf.te.rcp.application/src/org/eclipse/tcf/te/rcp/application/ApplicationWorkbenchAdvisor.java
@@ -0,0 +1,167 @@
+/*******************************************************************************
+ * Copyright (c) 2011 Wind River Systems, Inc. and others. 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:
+ * Wind River Systems - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.tcf.te.rcp.application;
+
+import java.text.Collator;
+
+import org.eclipse.core.runtime.jobs.Job;
+import org.eclipse.jface.dialogs.MessageDialog;
+import org.eclipse.jface.dialogs.TrayDialog;
+import org.eclipse.jface.util.Policy;
+import org.eclipse.jface.window.Window;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.swt.widgets.Event;
+import org.eclipse.swt.widgets.Listener;
+import org.eclipse.tcf.te.rcp.application.nls.Messages;
+import org.eclipse.ui.PlatformUI;
+import org.eclipse.ui.application.IWorkbenchConfigurer;
+import org.eclipse.ui.application.IWorkbenchWindowConfigurer;
+import org.eclipse.ui.application.WorkbenchAdvisor;
+import org.eclipse.ui.application.WorkbenchWindowAdvisor;
+import org.eclipse.ui.internal.PluginActionBuilder;
+
+
+/**
+ * Target Explorer, RCP: Workbench advisor implementation.
+ */
+@SuppressWarnings("restriction")
+public class ApplicationWorkbenchAdvisor extends WorkbenchAdvisor {
+
+ private final static String PERSPECTIVE_ID = "org.eclipse.tcf.te.ui.perspective"; //$NON-NLS-1$
+
+ private static ApplicationWorkbenchAdvisor workbenchAdvisor = null;
+
+ private Listener settingsChangeListener;
+
+ /**
+ * Creates a new workbench advisor instance.
+ */
+ public ApplicationWorkbenchAdvisor() {
+ super();
+ if (workbenchAdvisor != null) { throw new IllegalStateException(); }
+ workbenchAdvisor = this;
+
+ Listener closeListener = new Listener() {
+ public void handleEvent(Event event) {
+ boolean doExit = ApplicationWorkbenchWindowAdvisor.promptOnExit(null);
+ event.doit = doExit;
+ if (!doExit) event.type = SWT.None;
+ }
+ };
+ Display.getDefault().addListener(SWT.Close, closeListener);
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.ui.application.WorkbenchAdvisor#initialize
+ */
+ @Override
+ public void initialize(IWorkbenchConfigurer configurer) {
+
+ PluginActionBuilder.setAllowIdeLogging(false);
+
+ // make sure we always save and restore workspace state
+ configurer.setSaveAndRestore(true);
+
+ // show Help button in JFace dialogs
+ TrayDialog.setDialogHelpAvailable(true);
+
+ Policy.setComparator(Collator.getInstance());
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.ui.application.WorkbenchAdvisor#preStartup()
+ */
+ @Override
+ public void preStartup() {
+
+ // Suspend background jobs while we startup
+ Job.getJobManager().suspend();
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.ui.application.WorkbenchAdvisor#postStartup()
+ */
+ @Override
+ public void postStartup() {
+ try {
+ initializeSettingsChangeListener();
+ Display.getCurrent().addListener(SWT.Settings, settingsChangeListener);
+ } finally {// Resume background jobs after we startup
+ Job.getJobManager().resume();
+ }
+ }
+
+ /**
+ * Initialize the listener for settings changes.
+ */
+ private void initializeSettingsChangeListener() {
+ settingsChangeListener = new Listener() {
+
+ boolean currentHighContrast = Display.getCurrent().getHighContrast();
+
+ public void handleEvent(org.eclipse.swt.widgets.Event event) {
+ if (Display.getCurrent().getHighContrast() == currentHighContrast) return;
+
+ currentHighContrast = !currentHighContrast;
+
+ // make sure they really want to do this
+ if (new MessageDialog(null, Messages.SystemSettingsChange_title, null, Messages.SystemSettingsChange_message,
+ MessageDialog.QUESTION, new String[] { Messages.SystemSettingsChange_yes,
+ Messages.SystemSettingsChange_no }, 1).open() == Window.OK) {
+ PlatformUI.getWorkbench().restart();
+ }
+ }
+ };
+
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.ui.application.WorkbenchAdvisor#preShutdown()
+ */
+ @Override
+ public boolean preShutdown() {
+ Display.getCurrent().removeListener(SWT.Settings, settingsChangeListener);
+ return super.preShutdown();
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.ui.application.WorkbenchAdvisor#createWorkbenchWindowAdvisor(org.eclipse.ui.application.IWorkbenchWindowConfigurer)
+ */
+ @Override
+ public WorkbenchWindowAdvisor createWorkbenchWindowAdvisor(IWorkbenchWindowConfigurer configurer) {
+ return new ApplicationWorkbenchWindowAdvisor(this, configurer);
+ }
+
+ /**
+ * Return true if the intro plugin is present and false otherwise.
+ *
+ * @return boolean
+ */
+ public boolean hasIntro() {
+ return getWorkbenchConfigurer().getWorkbench().getIntroManager().hasIntro();
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.ui.application.WorkbenchAdvisor
+ */
+ @Override
+ public String getInitialWindowPerspectiveId() {
+ return PERSPECTIVE_ID;
+ }
+}

Back to the top