Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--plugins/org.eclipse.net4j.buddies.ui/src/org/eclipse/net4j/buddies/internal/ui/views/CollaborationsPane.java36
-rw-r--r--plugins/org.eclipse.net4j.buddies.ui/src/org/eclipse/net4j/buddies/internal/ui/views/CollaborationsView.java3
2 files changed, 35 insertions, 4 deletions
diff --git a/plugins/org.eclipse.net4j.buddies.ui/src/org/eclipse/net4j/buddies/internal/ui/views/CollaborationsPane.java b/plugins/org.eclipse.net4j.buddies.ui/src/org/eclipse/net4j/buddies/internal/ui/views/CollaborationsPane.java
index 999650fd68..787756ec89 100644
--- a/plugins/org.eclipse.net4j.buddies.ui/src/org/eclipse/net4j/buddies/internal/ui/views/CollaborationsPane.java
+++ b/plugins/org.eclipse.net4j.buddies.ui/src/org/eclipse/net4j/buddies/internal/ui/views/CollaborationsPane.java
@@ -30,7 +30,6 @@ import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IConfigurationElement;
import org.eclipse.core.runtime.IExtensionRegistry;
import org.eclipse.core.runtime.Platform;
-import org.eclipse.jface.action.IAction;
import org.eclipse.jface.resource.ImageDescriptor;
import org.eclipse.jface.viewers.ISelectionChangedListener;
import org.eclipse.jface.viewers.SelectionChangedEvent;
@@ -67,7 +66,7 @@ public class CollaborationsPane extends Composite implements IListener
private Map<IFacility, FacilityPane> facilityPanes = new HashMap<IFacility, FacilityPane>();
- private List<IAction> activateFacilityActions = new ArrayList<IAction>();
+ private List<ActivateFacilityAction> activateFacilityActions = new ArrayList<ActivateFacilityAction>();
private StackLayout paneStack;
@@ -110,6 +109,8 @@ public class CollaborationsPane extends Composite implements IListener
else
{
}
+
+ updateState();
}
public void setActiveCollaboration(IBuddyCollaboration collaboration)
@@ -165,7 +166,7 @@ public class CollaborationsPane extends Composite implements IListener
String type = element.getAttribute("type");
String icon = element.getAttribute("icon");
ImageDescriptor descriptor = AbstractUIPlugin.imageDescriptorFromPlugin(OM.BUNDLE_ID, icon);
- IAction action = new ActivateFacilityAction(type, descriptor);
+ ActivateFacilityAction action = new ActivateFacilityAction(type, descriptor);
activateFacilityActions.add(action);
bars.getToolBarManager().add(action);
}
@@ -217,11 +218,13 @@ public class CollaborationsPane extends Composite implements IListener
}
collaboration.addListener(this);
+ updateState();
}
protected void collaborationRemoved(IBuddyCollaboration collaboration)
{
collaboration.removeListener(this);
+ updateState();
}
protected void facilityInstalled(final IFacility facility, boolean fromRemote)
@@ -260,6 +263,8 @@ public class CollaborationsPane extends Composite implements IListener
setActiveCollaboration(collaboration);
setActiveFacility(collaboration, facility);
}
+
+ updateState();
}
protected FacilityPane addFacilityPane(IFacility facility)
@@ -295,6 +300,26 @@ public class CollaborationsPane extends Composite implements IListener
throw new IllegalStateException("No facility pane creator for type " + type);
}
+ protected void updateState()
+ {
+ for (ActivateFacilityAction action : activateFacilityActions)
+ {
+ if (activeCollaboration == null)
+ {
+ action.setEnabled(false);
+ }
+ else
+ {
+ String type = action.getType();
+ boolean installed = activeCollaboration.getFacility(type) != null;
+ action.setEnabled(!installed);
+
+ IFacility activeFacility = activeFacilities.get(activeCollaboration);
+ action.setChecked(ObjectUtil.equals(activeFacility.getType(), type));
+ }
+ }
+ }
+
/**
* @author Eike Stepper
*/
@@ -310,6 +335,11 @@ public class CollaborationsPane extends Composite implements IListener
this.type = type;
}
+ public String getType()
+ {
+ return type;
+ }
+
@Override
protected void safeRun() throws Exception
{
diff --git a/plugins/org.eclipse.net4j.buddies.ui/src/org/eclipse/net4j/buddies/internal/ui/views/CollaborationsView.java b/plugins/org.eclipse.net4j.buddies.ui/src/org/eclipse/net4j/buddies/internal/ui/views/CollaborationsView.java
index 01fec70856..06a02fece8 100644
--- a/plugins/org.eclipse.net4j.buddies.ui/src/org/eclipse/net4j/buddies/internal/ui/views/CollaborationsView.java
+++ b/plugins/org.eclipse.net4j.buddies.ui/src/org/eclipse/net4j/buddies/internal/ui/views/CollaborationsView.java
@@ -12,6 +12,7 @@ package org.eclipse.net4j.buddies.internal.ui.views;
import org.eclipse.net4j.buddies.IBuddyCollaboration;
import org.eclipse.net4j.buddies.internal.ui.bundle.OM;
+import org.eclipse.net4j.util.StringUtil;
import org.eclipse.net4j.util.container.ContainerUtil;
import org.eclipse.net4j.util.container.IContainer;
import org.eclipse.net4j.util.event.IEvent;
@@ -133,7 +134,7 @@ public class CollaborationsView extends SessionManagerView
private InstallFacilityAction(IBuddyCollaboration collaboration, String type, ImageDescriptor descriptor)
{
- super("Install " + type, AS_RADIO_BUTTON);
+ super("Install " + StringUtil.cap(type), AS_RADIO_BUTTON);
setToolTipText("Install " + type + " facility");
setImageDescriptor(descriptor);
this.collaboration = collaboration;

Back to the top