Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorUwe Stieber2013-03-28 07:02:14 +0000
committerUwe Stieber2013-03-28 07:02:14 +0000
commitd725e3b69ab9329268a57eca1efc59d7d790ec51 (patch)
tree3c78034c1fe3e57836c041a800580f2e902f4edb /target_explorer/plugins
parent9f28fd160e04c277307f7807c743031f84f3a681 (diff)
downloadorg.eclipse.tcf-d725e3b69ab9329268a57eca1efc59d7d790ec51.tar.gz
org.eclipse.tcf-d725e3b69ab9329268a57eca1efc59d7d790ec51.tar.xz
org.eclipse.tcf-d725e3b69ab9329268a57eca1efc59d7d790ec51.zip
Target Explorer: Do not auto-close open editors for static peers if the associated remote peer disappears
Diffstat (limited to 'target_explorer/plugins')
-rw-r--r--target_explorer/plugins/org.eclipse.tcf.te.tcf.ui/src/org/eclipse/tcf/te/tcf/ui/navigator/ModelListener.java5
-rw-r--r--target_explorer/plugins/org.eclipse.tcf.te.ui.views/src/org/eclipse/tcf/te/ui/views/editor/EditorEventListener.java287
2 files changed, 147 insertions, 145 deletions
diff --git a/target_explorer/plugins/org.eclipse.tcf.te.tcf.ui/src/org/eclipse/tcf/te/tcf/ui/navigator/ModelListener.java b/target_explorer/plugins/org.eclipse.tcf.te.tcf.ui/src/org/eclipse/tcf/te/tcf/ui/navigator/ModelListener.java
index a9b136290..5af6cf57c 100644
--- a/target_explorer/plugins/org.eclipse.tcf.te.tcf.ui/src/org/eclipse/tcf/te/tcf/ui/navigator/ModelListener.java
+++ b/target_explorer/plugins/org.eclipse.tcf.te.tcf.ui/src/org/eclipse/tcf/te/tcf/ui/navigator/ModelListener.java
@@ -77,8 +77,9 @@ public class ModelListener extends ModelAdapter {
if (listener != null) {
listener.locatorModelChanged(model, peerModel, added);
}
- // If no -> Default behavior is to close the editor (if any)
- else if (!added) {
+ // If no -> Default behavior for dynamic discovered peers is to close the editor (if any).
+ // For static peers, leave the editor untouched.
+ else if (!added && !peerModel.isStatic()) {
Display display = PlatformUI.getWorkbench().getDisplay();
if (display != null && !display.isDisposed()) {
display.asyncExec(new Runnable() {
diff --git a/target_explorer/plugins/org.eclipse.tcf.te.ui.views/src/org/eclipse/tcf/te/ui/views/editor/EditorEventListener.java b/target_explorer/plugins/org.eclipse.tcf.te.ui.views/src/org/eclipse/tcf/te/ui/views/editor/EditorEventListener.java
index bb36fbec8..2ab7f98b9 100644
--- a/target_explorer/plugins/org.eclipse.tcf.te.ui.views/src/org/eclipse/tcf/te/ui/views/editor/EditorEventListener.java
+++ b/target_explorer/plugins/org.eclipse.tcf.te.ui.views/src/org/eclipse/tcf/te/ui/views/editor/EditorEventListener.java
@@ -1,143 +1,144 @@
-/*******************************************************************************
- * Copyright (c) 2011, 2012 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.ui.views.editor;
-
-import java.util.EventObject;
-
-import org.eclipse.core.runtime.Assert;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.tcf.te.runtime.events.ChangeEvent;
-import org.eclipse.tcf.te.runtime.events.EventManager;
-import org.eclipse.tcf.te.runtime.interfaces.IDisposable;
-import org.eclipse.tcf.te.runtime.interfaces.properties.IPropertiesContainer;
-import org.eclipse.tcf.te.ui.events.AbstractEventListener;
-import org.eclipse.tcf.te.ui.views.activator.UIPlugin;
-import org.eclipse.tcf.te.ui.views.interfaces.tracing.ITraceIds;
-import org.eclipse.ui.IEditorPart;
-import org.eclipse.ui.IPropertyListener;
-import org.eclipse.ui.ISources;
-import org.eclipse.ui.forms.editor.IFormPage;
-import org.eclipse.ui.services.IEvaluationService;
-
-/**
- * Editor event listener implementation.
- * <p>
- * The event listener is registered by an editor instance for a given editor input
- * and is supposed to receive events for the editor input only.
- */
-public final class EditorEventListener extends AbstractEventListener implements IDisposable, IPropertyListener {
- // Reference to the parent editor
- private final Editor editor;
- // Flag to remember the disposed state
- private boolean disposed = false;
-
- /**
- * Constructor.
- *
- * @param editor The parent editor. Must not be <code>null</code>.
- */
- public EditorEventListener(Editor editor) {
- super();
-
- Assert.isNotNull(editor);
- this.editor = editor;
-
- // Register the event listener if the editor input is a properties container
- Object node = editor.getEditorInput() != null ? editor.getEditorInput().getAdapter(Object.class) : null;
- if (node instanceof IPropertiesContainer) EventManager.getInstance().addEventListener(this, ChangeEvent.class, node);
-
- editor.addPropertyListener(this);
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.tcf.te.runtime.interfaces.IDisposable#dispose()
- */
- @Override
- public void dispose() {
- disposed = true;
- EventManager.getInstance().removeEventListener(this);
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.tcf.te.runtime.interfaces.events.IEventListener#eventFired(java.util.EventObject)
- */
- @Override
- public void eventFired(EventObject event) {
- // Do nothing if already disposed
- if (disposed) return;
-
- // Ignore everything not being a change event
- if (!(event instanceof ChangeEvent)) return;
-
- ChangeEvent changeEvent = (ChangeEvent)event;
-
- if (UIPlugin.getTraceHandler().isSlotEnabled(0, ITraceIds.TRACE_EDITOR_EVENT_LISTENER)) {
- UIPlugin.getTraceHandler().trace("Entered eventFired(...). eventId='" + changeEvent.getEventId() + "'" //$NON-NLS-1$ //$NON-NLS-2$
- + ", oldValue='" + changeEvent.getOldValue() + "'" //$NON-NLS-1$ //$NON-NLS-2$
- + ", newValue='" + changeEvent.getNewValue() + "'", //$NON-NLS-1$ //$NON-NLS-2$
- 0, ITraceIds.TRACE_EDITOR_EVENT_LISTENER,
- IStatus.INFO, this);
- }
-
- // Get the event source
- Object source = event.getSource();
- // Double check with the parent editors input object
- Object node = editor.getEditorInput() != null ? editor.getEditorInput().getAdapter(Object.class) : null;
- // If the editor input cannot be determined or it does not match the event source
- // --> return immediately
- if (node == null || !node.equals(source)) {
- if (UIPlugin.getTraceHandler().isSlotEnabled(0, ITraceIds.TRACE_EDITOR_EVENT_LISTENER)) {
- UIPlugin.getTraceHandler().trace("Dropping out of eventFired(...). Event source does not match editor input.", //$NON-NLS-1$
- 0, ITraceIds.TRACE_EDITOR_EVENT_LISTENER,
- IStatus.WARNING, this);
- }
-
- return;
- }
-
- // Refresh the page list. Changing editor input element properties
- // may effect the page list -> Update in any case.
- editor.updatePageList();
-
- // If the event is a "editor.refreshTab" event, skip the rest
- if (!"editor.refreshTab".equals(changeEvent.getEventId())) { //$NON-NLS-1$
- // Update the active page content by calling IFormPage#setActive(boolean)
- Object page = editor.getSelectedPage();
- if (page instanceof IFormPage) {
- ((IFormPage)page).setActive(((IFormPage)page).isActive());
- }
-
- // Update the editor part name
- editor.updatePartName();
-
- // Request a re-evaluation if all expressions referring the "activeEditorInput" source.
- IEvaluationService service = (IEvaluationService)editor.getSite().getService(IEvaluationService.class);
- if (service != null) {
- service.requestEvaluation(ISources.ACTIVE_EDITOR_INPUT_NAME);
- }
- }
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.ui.IPropertyListener#propertyChanged(java.lang.Object, int)
- */
- @Override
- public void propertyChanged(Object source, int propId) {
- if (source == this.editor) {
- if (IEditorPart.PROP_DIRTY == propId) {
- // Request a re-evaluation if all expressions referring the "activeEditorInput" source.
- IEvaluationService service = (IEvaluationService)editor.getSite().getService(IEvaluationService.class);
- if (service != null) {
- service.requestEvaluation(ISources.ACTIVE_EDITOR_INPUT_NAME);
- }
- }
- }
- }
-}
+/*******************************************************************************
+ * Copyright (c) 2011, 2012 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.ui.views.editor;
+
+import java.util.EventObject;
+
+import org.eclipse.core.runtime.Assert;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.tcf.te.runtime.events.ChangeEvent;
+import org.eclipse.tcf.te.runtime.events.EventManager;
+import org.eclipse.tcf.te.runtime.interfaces.IDisposable;
+import org.eclipse.tcf.te.runtime.interfaces.properties.IPropertiesContainer;
+import org.eclipse.tcf.te.ui.events.AbstractEventListener;
+import org.eclipse.tcf.te.ui.views.activator.UIPlugin;
+import org.eclipse.tcf.te.ui.views.interfaces.tracing.ITraceIds;
+import org.eclipse.ui.IEditorPart;
+import org.eclipse.ui.IPropertyListener;
+import org.eclipse.ui.ISources;
+import org.eclipse.ui.forms.editor.IFormPage;
+import org.eclipse.ui.services.IEvaluationService;
+
+/**
+ * Editor event listener implementation.
+ * <p>
+ * The event listener is registered by an editor instance for a given editor input
+ * and is supposed to receive events for the editor input only.
+ */
+public final class EditorEventListener extends AbstractEventListener implements IDisposable, IPropertyListener {
+ // Reference to the parent editor
+ private final Editor editor;
+ // Flag to remember the disposed state
+ private boolean disposed = false;
+
+ /**
+ * Constructor.
+ *
+ * @param editor The parent editor. Must not be <code>null</code>.
+ */
+ public EditorEventListener(Editor editor) {
+ super();
+
+ Assert.isNotNull(editor);
+ this.editor = editor;
+
+ // Register the event listener if the editor input is a properties container
+ Object node = editor.getEditorInput() != null ? editor.getEditorInput().getAdapter(Object.class) : null;
+ if (node instanceof IPropertiesContainer) EventManager.getInstance().addEventListener(this, ChangeEvent.class, node);
+
+ editor.addPropertyListener(this);
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.tcf.te.runtime.interfaces.IDisposable#dispose()
+ */
+ @Override
+ public void dispose() {
+ disposed = true;
+ EventManager.getInstance().removeEventListener(this);
+ editor.removePropertyListener(this);
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.tcf.te.runtime.interfaces.events.IEventListener#eventFired(java.util.EventObject)
+ */
+ @Override
+ public void eventFired(EventObject event) {
+ // Do nothing if already disposed
+ if (disposed) return;
+
+ // Ignore everything not being a change event
+ if (!(event instanceof ChangeEvent)) return;
+
+ ChangeEvent changeEvent = (ChangeEvent)event;
+
+ if (UIPlugin.getTraceHandler().isSlotEnabled(0, ITraceIds.TRACE_EDITOR_EVENT_LISTENER)) {
+ UIPlugin.getTraceHandler().trace("Entered eventFired(...). eventId='" + changeEvent.getEventId() + "'" //$NON-NLS-1$ //$NON-NLS-2$
+ + ", oldValue='" + changeEvent.getOldValue() + "'" //$NON-NLS-1$ //$NON-NLS-2$
+ + ", newValue='" + changeEvent.getNewValue() + "'", //$NON-NLS-1$ //$NON-NLS-2$
+ 0, ITraceIds.TRACE_EDITOR_EVENT_LISTENER,
+ IStatus.INFO, this);
+ }
+
+ // Get the event source
+ Object source = event.getSource();
+ // Double check with the parent editors input object
+ Object node = editor.getEditorInput() != null ? editor.getEditorInput().getAdapter(Object.class) : null;
+ // If the editor input cannot be determined or it does not match the event source
+ // --> return immediately
+ if (node == null || !node.equals(source)) {
+ if (UIPlugin.getTraceHandler().isSlotEnabled(0, ITraceIds.TRACE_EDITOR_EVENT_LISTENER)) {
+ UIPlugin.getTraceHandler().trace("Dropping out of eventFired(...). Event source does not match editor input.", //$NON-NLS-1$
+ 0, ITraceIds.TRACE_EDITOR_EVENT_LISTENER,
+ IStatus.WARNING, this);
+ }
+
+ return;
+ }
+
+ // Refresh the page list. Changing editor input element properties
+ // may effect the page list -> Update in any case.
+ editor.updatePageList();
+
+ // If the event is a "editor.refreshTab" event, skip the rest
+ if (!"editor.refreshTab".equals(changeEvent.getEventId())) { //$NON-NLS-1$
+ // Update the active page content by calling IFormPage#setActive(boolean)
+ Object page = editor.getSelectedPage();
+ if (page instanceof IFormPage) {
+ ((IFormPage)page).setActive(((IFormPage)page).isActive());
+ }
+
+ // Update the editor part name
+ editor.updatePartName();
+
+ // Request a re-evaluation if all expressions referring the "activeEditorInput" source.
+ IEvaluationService service = (IEvaluationService)editor.getSite().getService(IEvaluationService.class);
+ if (service != null) {
+ service.requestEvaluation(ISources.ACTIVE_EDITOR_INPUT_NAME);
+ }
+ }
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.ui.IPropertyListener#propertyChanged(java.lang.Object, int)
+ */
+ @Override
+ public void propertyChanged(Object source, int propId) {
+ if (source == this.editor) {
+ if (IEditorPart.PROP_DIRTY == propId) {
+ // Request a re-evaluation if all expressions referring the "activeEditorInput" source.
+ IEvaluationService service = (IEvaluationService)editor.getSite().getService(IEvaluationService.class);
+ if (service != null) {
+ service.requestEvaluation(ISources.ACTIVE_EDITOR_INPUT_NAME);
+ }
+ }
+ }
+ }
+}

Back to the top