diff options
author | Uwe Stieber | 2013-06-14 12:55:28 +0000 |
---|---|---|
committer | Uwe Stieber | 2013-06-14 12:55:28 +0000 |
commit | 149ec7c79a2766524916ebb0b715d06fe5569384 (patch) | |
tree | b8ff8d5632406aabac05a93e001e5d526be4ea95 /target_explorer/plugins/org.eclipse.tcf.te.tcf.processes.ui | |
parent | c332d9e57869110315a42d4e0da0c53bb8d515c6 (diff) | |
download | org.eclipse.tcf-149ec7c79a2766524916ebb0b715d06fe5569384.tar.gz org.eclipse.tcf-149ec7c79a2766524916ebb0b715d06fe5569384.tar.xz org.eclipse.tcf-149ec7c79a2766524916ebb0b715d06fe5569384.zip |
Target Explorer: Process monitor tree label provider not forwarding color and font requests correctly
Diffstat (limited to 'target_explorer/plugins/org.eclipse.tcf.te.tcf.processes.ui')
6 files changed, 87 insertions, 57 deletions
diff --git a/target_explorer/plugins/org.eclipse.tcf.te.tcf.processes.ui/src/org/eclipse/tcf/te/tcf/processes/ui/editor/tree/columns/PIDLabelProvider.java b/target_explorer/plugins/org.eclipse.tcf.te.tcf.processes.ui/src/org/eclipse/tcf/te/tcf/processes/ui/editor/tree/columns/PIDLabelProvider.java index 3aebb8070..e84ace6c1 100644 --- a/target_explorer/plugins/org.eclipse.tcf.te.tcf.processes.ui/src/org/eclipse/tcf/te/tcf/processes/ui/editor/tree/columns/PIDLabelProvider.java +++ b/target_explorer/plugins/org.eclipse.tcf.te.tcf.processes.ui/src/org/eclipse/tcf/te/tcf/processes/ui/editor/tree/columns/PIDLabelProvider.java @@ -12,7 +12,6 @@ package org.eclipse.tcf.te.tcf.processes.ui.editor.tree.columns; import java.util.concurrent.atomic.AtomicLong; import org.eclipse.core.runtime.Assert; -import org.eclipse.jface.viewers.LabelProvider; import org.eclipse.tcf.protocol.Protocol; import org.eclipse.tcf.te.runtime.services.ServiceManager; import org.eclipse.tcf.te.runtime.services.interfaces.IUIService; @@ -21,11 +20,12 @@ import org.eclipse.tcf.te.tcf.processes.core.model.interfaces.IPendingOperationN import org.eclipse.tcf.te.tcf.processes.core.model.interfaces.IProcessContextNode; import org.eclipse.tcf.te.tcf.processes.core.model.interfaces.runtime.IRuntimeModel; import org.eclipse.tcf.te.tcf.processes.ui.interfaces.IProcessMonitorUIDelegate; +import org.eclipse.tcf.te.tcf.processes.ui.navigator.runtime.AbstractLabelProviderDelegate; /** * The label provider for the tree column "PID". */ -public class PIDLabelProvider extends LabelProvider { +public class PIDLabelProvider extends AbstractLabelProviderDelegate { /* (non-Javadoc) * @see org.eclipse.jface.viewers.LabelProvider#getText(java.lang.Object) diff --git a/target_explorer/plugins/org.eclipse.tcf.te.tcf.processes.ui/src/org/eclipse/tcf/te/tcf/processes/ui/editor/tree/columns/PPIDLabelProvider.java b/target_explorer/plugins/org.eclipse.tcf.te.tcf.processes.ui/src/org/eclipse/tcf/te/tcf/processes/ui/editor/tree/columns/PPIDLabelProvider.java index f4a2dc2cf..184cad8c5 100644 --- a/target_explorer/plugins/org.eclipse.tcf.te.tcf.processes.ui/src/org/eclipse/tcf/te/tcf/processes/ui/editor/tree/columns/PPIDLabelProvider.java +++ b/target_explorer/plugins/org.eclipse.tcf.te.tcf.processes.ui/src/org/eclipse/tcf/te/tcf/processes/ui/editor/tree/columns/PPIDLabelProvider.java @@ -12,7 +12,6 @@ package org.eclipse.tcf.te.tcf.processes.ui.editor.tree.columns; import java.util.concurrent.atomic.AtomicLong; import org.eclipse.core.runtime.Assert; -import org.eclipse.jface.viewers.LabelProvider; import org.eclipse.tcf.protocol.Protocol; import org.eclipse.tcf.te.runtime.services.ServiceManager; import org.eclipse.tcf.te.runtime.services.interfaces.IUIService; @@ -21,11 +20,12 @@ import org.eclipse.tcf.te.tcf.processes.core.model.interfaces.IPendingOperationN import org.eclipse.tcf.te.tcf.processes.core.model.interfaces.IProcessContextNode; import org.eclipse.tcf.te.tcf.processes.core.model.interfaces.runtime.IRuntimeModel; import org.eclipse.tcf.te.tcf.processes.ui.interfaces.IProcessMonitorUIDelegate; +import org.eclipse.tcf.te.tcf.processes.ui.navigator.runtime.AbstractLabelProviderDelegate; /** * The label provider for the tree column "PPID". */ -public class PPIDLabelProvider extends LabelProvider { +public class PPIDLabelProvider extends AbstractLabelProviderDelegate { /* (non-Javadoc) * @see org.eclipse.jface.viewers.ITableLabelProvider#getColumnText(java.lang.Object, int) diff --git a/target_explorer/plugins/org.eclipse.tcf.te.tcf.processes.ui/src/org/eclipse/tcf/te/tcf/processes/ui/editor/tree/columns/StateLabelProvider.java b/target_explorer/plugins/org.eclipse.tcf.te.tcf.processes.ui/src/org/eclipse/tcf/te/tcf/processes/ui/editor/tree/columns/StateLabelProvider.java index 096e10e3a..aedbb0202 100644 --- a/target_explorer/plugins/org.eclipse.tcf.te.tcf.processes.ui/src/org/eclipse/tcf/te/tcf/processes/ui/editor/tree/columns/StateLabelProvider.java +++ b/target_explorer/plugins/org.eclipse.tcf.te.tcf.processes.ui/src/org/eclipse/tcf/te/tcf/processes/ui/editor/tree/columns/StateLabelProvider.java @@ -12,16 +12,16 @@ package org.eclipse.tcf.te.tcf.processes.ui.editor.tree.columns; import java.util.concurrent.atomic.AtomicReference; import org.eclipse.core.runtime.Assert; -import org.eclipse.jface.viewers.LabelProvider; import org.eclipse.tcf.protocol.Protocol; import org.eclipse.tcf.te.tcf.processes.core.model.interfaces.IPendingOperationNode; import org.eclipse.tcf.te.tcf.processes.core.model.interfaces.IProcessContextNode; import org.eclipse.tcf.te.tcf.processes.core.model.interfaces.runtime.IRuntimeModel; +import org.eclipse.tcf.te.tcf.processes.ui.navigator.runtime.AbstractLabelProviderDelegate; /** * The label provider for the tree column "state". */ -public class StateLabelProvider extends LabelProvider { +public class StateLabelProvider extends AbstractLabelProviderDelegate { /* (non-Javadoc) * @see org.eclipse.jface.viewers.ITableLabelProvider#getColumnText(java.lang.Object, int) diff --git a/target_explorer/plugins/org.eclipse.tcf.te.tcf.processes.ui/src/org/eclipse/tcf/te/tcf/processes/ui/editor/tree/columns/UserLabelProvider.java b/target_explorer/plugins/org.eclipse.tcf.te.tcf.processes.ui/src/org/eclipse/tcf/te/tcf/processes/ui/editor/tree/columns/UserLabelProvider.java index 4d9e9bbf6..72d95717f 100644 --- a/target_explorer/plugins/org.eclipse.tcf.te.tcf.processes.ui/src/org/eclipse/tcf/te/tcf/processes/ui/editor/tree/columns/UserLabelProvider.java +++ b/target_explorer/plugins/org.eclipse.tcf.te.tcf.processes.ui/src/org/eclipse/tcf/te/tcf/processes/ui/editor/tree/columns/UserLabelProvider.java @@ -12,16 +12,16 @@ package org.eclipse.tcf.te.tcf.processes.ui.editor.tree.columns; import java.util.concurrent.atomic.AtomicReference; import org.eclipse.core.runtime.Assert; -import org.eclipse.jface.viewers.LabelProvider; import org.eclipse.tcf.protocol.Protocol; import org.eclipse.tcf.te.tcf.processes.core.model.interfaces.IPendingOperationNode; import org.eclipse.tcf.te.tcf.processes.core.model.interfaces.IProcessContextNode; import org.eclipse.tcf.te.tcf.processes.core.model.interfaces.runtime.IRuntimeModel; +import org.eclipse.tcf.te.tcf.processes.ui.navigator.runtime.AbstractLabelProviderDelegate; /** * The label provider for the tree column "user". */ -public class UserLabelProvider extends LabelProvider { +public class UserLabelProvider extends AbstractLabelProviderDelegate { /* (non-Javadoc) * @see org.eclipse.jface.viewers.ITableLabelProvider#getColumnText(java.lang.Object, int) diff --git a/target_explorer/plugins/org.eclipse.tcf.te.tcf.processes.ui/src/org/eclipse/tcf/te/tcf/processes/ui/navigator/runtime/AbstractLabelProviderDelegate.java b/target_explorer/plugins/org.eclipse.tcf.te.tcf.processes.ui/src/org/eclipse/tcf/te/tcf/processes/ui/navigator/runtime/AbstractLabelProviderDelegate.java new file mode 100644 index 000000000..3b9df31bd --- /dev/null +++ b/target_explorer/plugins/org.eclipse.tcf.te.tcf.processes.ui/src/org/eclipse/tcf/te/tcf/processes/ui/navigator/runtime/AbstractLabelProviderDelegate.java @@ -0,0 +1,78 @@ +/******************************************************************************* + * Copyright (c) 2013 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.tcf.processes.ui.navigator.runtime; + +import java.util.concurrent.atomic.AtomicBoolean; + +import org.eclipse.jface.viewers.IColorProvider; +import org.eclipse.jface.viewers.IFontProvider; +import org.eclipse.jface.viewers.LabelProvider; +import org.eclipse.swt.SWT; +import org.eclipse.swt.graphics.Color; +import org.eclipse.swt.graphics.Font; +import org.eclipse.tcf.protocol.Protocol; +import org.eclipse.tcf.te.tcf.processes.core.model.interfaces.IProcessContextNode; +import org.eclipse.ui.PlatformUI; + +/** + * Abstract label provider delegate implementation. + */ +public abstract class AbstractLabelProviderDelegate extends LabelProvider implements IColorProvider, IFontProvider { + + /* (non-Javadoc) + * @see org.eclipse.jface.viewers.IColorProvider#getForeground(java.lang.Object) + */ + @Override + public Color getForeground(Object element) { + if (element instanceof IProcessContextNode) { + final IProcessContextNode node = (IProcessContextNode) element; + final AtomicBoolean canAttach = new AtomicBoolean(); + + Runnable runnable = new Runnable() { + + @Override + public void run() { + if (node.getProcessContext() != null) { + if (node.getProcessContext().getProperties().containsKey("CanAttach")) { //$NON-NLS-1$ + Boolean value = (Boolean)node.getProcessContext().getProperties().get("CanAttach"); //$NON-NLS-1$ + canAttach.set(value != null && value.booleanValue()); + } else { + canAttach.set(true); + } + } + } + }; + if (Protocol.isDispatchThread()) runnable.run(); + else Protocol.invokeAndWait(runnable); + + if (!canAttach.get()) { + return PlatformUI.getWorkbench().getDisplay().getSystemColor(SWT.COLOR_DARK_GRAY); + } + } + + return null; + } + + /* (non-Javadoc) + * @see org.eclipse.jface.viewers.IColorProvider#getBackground(java.lang.Object) + */ + @Override + public Color getBackground(Object element) { + return null; + } + + /* (non-Javadoc) + * @see org.eclipse.jface.viewers.IFontProvider#getFont(java.lang.Object) + */ + @Override + public Font getFont(Object element) { + return null; + } +} diff --git a/target_explorer/plugins/org.eclipse.tcf.te.tcf.processes.ui/src/org/eclipse/tcf/te/tcf/processes/ui/navigator/runtime/LabelProviderDelegate.java b/target_explorer/plugins/org.eclipse.tcf.te.tcf.processes.ui/src/org/eclipse/tcf/te/tcf/processes/ui/navigator/runtime/LabelProviderDelegate.java index 36e6ab278..5975f4ef4 100644 --- a/target_explorer/plugins/org.eclipse.tcf.te.tcf.processes.ui/src/org/eclipse/tcf/te/tcf/processes/ui/navigator/runtime/LabelProviderDelegate.java +++ b/target_explorer/plugins/org.eclipse.tcf.te.tcf.processes.ui/src/org/eclipse/tcf/te/tcf/processes/ui/navigator/runtime/LabelProviderDelegate.java @@ -9,14 +9,9 @@ *******************************************************************************/ package org.eclipse.tcf.te.tcf.processes.ui.navigator.runtime; -import java.util.concurrent.atomic.AtomicBoolean; import java.util.concurrent.atomic.AtomicReference; -import org.eclipse.jface.viewers.IColorProvider; import org.eclipse.jface.viewers.ILabelDecorator; -import org.eclipse.jface.viewers.LabelProvider; -import org.eclipse.swt.SWT; -import org.eclipse.swt.graphics.Color; import org.eclipse.swt.graphics.Image; import org.eclipse.tcf.protocol.Protocol; import org.eclipse.tcf.te.runtime.model.interfaces.IModelNode; @@ -26,13 +21,12 @@ import org.eclipse.tcf.te.tcf.processes.core.model.interfaces.runtime.IRuntimeMo import org.eclipse.tcf.te.tcf.processes.ui.activator.UIPlugin; import org.eclipse.tcf.te.tcf.processes.ui.internal.ImageConsts; import org.eclipse.tcf.te.tcf.processes.ui.nls.Messages; -import org.eclipse.ui.PlatformUI; /** * Runtime model label provider delegate implementation. */ -public class LabelProviderDelegate extends LabelProvider implements ILabelDecorator, IColorProvider { +public class LabelProviderDelegate extends AbstractLabelProviderDelegate implements ILabelDecorator { /* (non-Javadoc) * @see org.eclipse.jface.viewers.LabelProvider#getText(java.lang.Object) @@ -127,46 +121,4 @@ public class LabelProviderDelegate extends LabelProvider implements ILabelDecora public String decorateText(final String text, final Object element) { return null; } - - /* (non-Javadoc) - * @see org.eclipse.jface.viewers.IColorProvider#getForeground(java.lang.Object) - */ - @Override - public Color getForeground(final Object element) { - if (element instanceof IProcessContextNode) { - final IProcessContextNode node = (IProcessContextNode) element; - final AtomicBoolean canAttach = new AtomicBoolean(); - - Runnable runnable = new Runnable() { - - @Override - public void run() { - if (node.getProcessContext() != null) { - if (node.getProcessContext().getProperties().containsKey("CanAttach")) { //$NON-NLS-1$ - Boolean value = (Boolean)node.getProcessContext().getProperties().get("CanAttach"); //$NON-NLS-1$ - canAttach.set(value != null && value.booleanValue()); - } else { - canAttach.set(true); - } - } - } - }; - if (Protocol.isDispatchThread()) runnable.run(); - else Protocol.invokeAndWait(runnable); - - if (!canAttach.get()) { - return PlatformUI.getWorkbench().getDisplay().getSystemColor(SWT.COLOR_DARK_GRAY); - } - } - - return null; - } - - /* (non-Javadoc) - * @see org.eclipse.jface.viewers.IColorProvider#getBackground(java.lang.Object) - */ - @Override - public Color getBackground(Object element) { - return null; - } } |