summaryrefslogtreecommitdiffstats
path: root/com.gluster.storage.management.gui/src
diff options
context:
space:
mode:
authorShireesh Anjal <shireesh@gluster.com>2011-03-17 19:20:32 +0530
committerShireesh Anjal <shireesh@gluster.com>2011-03-17 19:22:29 +0530
commitd7fc89bed7cb7997a31d19004d3e590cd2e9185a (patch)
tree7272eb63ee40957f9b00b1055b49775e451f5328 /com.gluster.storage.management.gui/src
parent4cbbb21b0efefabbc587d3fd5cb643e85c3b42d3 (diff)
Converting tabs to view
Diffstat (limited to 'com.gluster.storage.management.gui/src')
-rw-r--r--com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/StartVolumeAction.java15
-rw-r--r--com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/DiscoveredServersView.java117
-rw-r--r--com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/details/ServersPage.java5
-rw-r--r--com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/navigator/NavigationView.java71
4 files changed, 197 insertions, 11 deletions
diff --git a/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/StartVolumeAction.java b/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/StartVolumeAction.java
index 3206635d..dc8ee77b 100644
--- a/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/StartVolumeAction.java
+++ b/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/StartVolumeAction.java
@@ -19,14 +19,21 @@
package com.gluster.storage.management.gui.actions;
import org.eclipse.jface.action.IAction;
-import org.eclipse.jface.viewers.ISelection;
-import org.eclipse.ui.IWorkbenchWindow;
-import org.eclipse.ui.IWorkbenchWindowActionDelegate;
+import org.eclipse.ui.PlatformUI;
+
+import com.gluster.storage.management.gui.views.DiscoveredServersView;
public class StartVolumeAction extends AbstractActionDelegate {
@Override
public void run(IAction action) {
- System.out.println("Running [" + this.getClass().getSimpleName() + "]");
+ PlatformUI
+ .getWorkbench()
+ .getActiveWorkbenchWindow()
+ .getActivePage()
+ .hideView(
+ PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage()
+ .findViewReference(DiscoveredServersView.ID));
+ System.out.println("After closing the view!");
}
@Override
diff --git a/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/DiscoveredServersView.java b/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/DiscoveredServersView.java
new file mode 100644
index 00000000..2969df29
--- /dev/null
+++ b/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/DiscoveredServersView.java
@@ -0,0 +1,117 @@
+/**
+ * DiscoveredServersView.java
+ *
+ * Copyright (c) 2011 Gluster, Inc. <http://www.gluster.com>
+ * This file is part of Gluster Management Console.
+ *
+ * Gluster Management Console is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * Gluster Management Console is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License
+ * for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see
+ * <http://www.gnu.org/licenses/>.
+ */
+package com.gluster.storage.management.gui.views;
+
+import org.eclipse.jface.viewers.DoubleClickEvent;
+import org.eclipse.jface.viewers.IDoubleClickListener;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.StructuredSelection;
+import org.eclipse.jface.viewers.TreeSelection;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.ui.ISelectionListener;
+import org.eclipse.ui.IWorkbenchPart;
+import org.eclipse.ui.part.ViewPart;
+
+import com.gluster.storage.management.core.model.Entity;
+import com.gluster.storage.management.core.model.EntityGroup;
+import com.gluster.storage.management.core.model.Server;
+import com.gluster.storage.management.gui.utils.GUIHelper;
+import com.gluster.storage.management.gui.views.details.ServersPage;
+import com.gluster.storage.management.gui.views.navigator.NavigationView;
+
+/**
+ *
+ */
+public class DiscoveredServersView extends ViewPart implements IDoubleClickListener, ISelectionListener {
+ public static final String ID = DiscoveredServersView.class.getName();
+ private static final GUIHelper guiHelper = GUIHelper.getInstance();
+ private EntityGroup<Server> servers;
+ private ServersPage page;
+
+ public DiscoveredServersView() {
+ // TODO Auto-generated constructor stub
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.ui.part.WorkbenchPart#createPartControl(org.eclipse.swt.widgets.Composite)
+ */
+ @Override
+ public void createPartControl(Composite parent) {
+ if (servers == null) {
+ ISelection selection = getSite().getPage().getSelection();
+ if (selection instanceof TreeSelection) {
+ Entity selectedEntity = (Entity) ((TreeSelection) selection).getFirstElement();
+ if (selectedEntity instanceof EntityGroup) {
+ EntityGroup group = (EntityGroup) selectedEntity;
+ if (group.getEntityType() == Server.class) {
+ servers = group;
+ }
+ }
+ }
+ }
+ page = new ServersPage(parent, SWT.NONE, servers);
+
+ page.addDoubleClickListener(this);
+ getSite().getPage().addSelectionListener(this);
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.ui.part.WorkbenchPart#setFocus()
+ */
+ @Override
+ public void setFocus() {
+ page.setFocus();
+ }
+
+ @Override
+ public void doubleClick(DoubleClickEvent event) {
+ NavigationView clusterView = (NavigationView) guiHelper.getView(NavigationView.ID);
+ if (clusterView != null) {
+ clusterView.selectEntity((Entity) ((StructuredSelection) event.getSelection()).getFirstElement());
+ }
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.ui.ISelectionListener#selectionChanged(org.eclipse.ui.IWorkbenchPart,
+ * org.eclipse.jface.viewers.ISelection)
+ */
+ @Override
+ public void selectionChanged(IWorkbenchPart part, ISelection selection) {
+ if (part instanceof NavigationView && selection instanceof TreeSelection) {
+ Entity selectedEntity = (Entity) ((TreeSelection) selection).getFirstElement();
+
+ if (servers == selectedEntity || selectedEntity == null || !(selectedEntity instanceof EntityGroup) || ((EntityGroup) selectedEntity).getEntityType() != Server.class) {
+ // entity selection has not changed. do nothing.
+ return;
+ }
+
+ servers = (EntityGroup<Server>) selectedEntity;
+ page.setInput(servers);
+ }
+ }
+}
diff --git a/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/details/ServersPage.java b/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/details/ServersPage.java
index eb2053dd..b736aa8e 100644
--- a/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/details/ServersPage.java
+++ b/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/details/ServersPage.java
@@ -98,6 +98,11 @@ public class ServersPage extends Composite {
}
});
}
+
+ public void setInput(EntityGroup<Server> servers) {
+ tableViewer.setInput(servers);
+ tableViewer.refresh();
+ }
public void addDoubleClickListener(IDoubleClickListener listener) {
tableViewer.addDoubleClickListener(listener);
diff --git a/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/navigator/NavigationView.java b/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/navigator/NavigationView.java
index 84fb9e99..704ea120 100644
--- a/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/navigator/NavigationView.java
+++ b/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/navigator/NavigationView.java
@@ -18,14 +18,24 @@
*******************************************************************************/
package com.gluster.storage.management.gui.views.navigator;
+import org.eclipse.core.commands.Command;
+import org.eclipse.core.commands.ExecutionEvent;
import org.eclipse.core.runtime.IAdapterFactory;
import org.eclipse.core.runtime.Platform;
import org.eclipse.jface.action.MenuManager;
+import org.eclipse.jface.viewers.ISelection;
import org.eclipse.jface.viewers.StructuredSelection;
+import org.eclipse.jface.viewers.TreeSelection;
import org.eclipse.jface.viewers.TreeViewer;
import org.eclipse.swt.SWT;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Menu;
+import org.eclipse.ui.ISelectionListener;
+import org.eclipse.ui.IViewReference;
+import org.eclipse.ui.IWorkbenchPart;
+import org.eclipse.ui.PartInitException;
+import org.eclipse.ui.PlatformUI;
+import org.eclipse.ui.commands.ICommandService;
import org.eclipse.ui.model.BaseWorkbenchContentProvider;
import org.eclipse.ui.model.WorkbenchLabelProvider;
import org.eclipse.ui.part.ViewPart;
@@ -33,15 +43,18 @@ import org.eclipse.ui.part.ViewPart;
import com.gluster.storage.management.client.GlusterDataModelManager;
import com.gluster.storage.management.core.model.DefaultClusterListener;
import com.gluster.storage.management.core.model.Entity;
+import com.gluster.storage.management.core.model.EntityGroup;
import com.gluster.storage.management.core.model.GlusterDataModel;
import com.gluster.storage.management.core.model.GlusterServer;
-import com.gluster.storage.management.core.model.IClusterListener;
+import com.gluster.storage.management.core.model.Server;
+import com.gluster.storage.management.gui.views.DiscoveredServersView;
-public class NavigationView extends ViewPart {
+public class NavigationView extends ViewPart implements ISelectionListener {
public static final String ID = "com.gluster.storage.management.gui.views.navigator";
private GlusterDataModel model;
private TreeViewer treeViewer;
private IAdapterFactory adapterFactory = new ClusterAdapterFactory();
+ private Entity entity;
public NavigationView() {
super();
@@ -50,7 +63,7 @@ public class NavigationView extends ViewPart {
@Override
public void createPartControl(Composite parent) {
model = GlusterDataModelManager.getInstance().getModel();
-
+
treeViewer = new TreeViewer(parent, SWT.BORDER | SWT.MULTI | SWT.V_SCROLL);
getSite().setSelectionProvider(treeViewer);
Platform.getAdapterManager().registerAdapters(adapterFactory, Entity.class);
@@ -60,19 +73,21 @@ public class NavigationView extends ViewPart {
treeViewer.expandAll();
// select the first element by default
treeViewer.setSelection(new StructuredSelection(model.getChildren().get(0)));
-
+
MenuManager menuManager = new MenuManager("&Gluster", "gluster.context.menu");
Menu contextMenu = menuManager.createContextMenu(treeViewer.getControl());
treeViewer.getTree().setMenu(contextMenu);
-
+
getSite().registerContextMenu(menuManager, treeViewer);
-
+
GlusterDataModelManager.getInstance().addClusterListener(new DefaultClusterListener() {
@Override
public void serverAdded(GlusterServer server) {
treeViewer.refresh();
}
});
+
+ getSite().getPage().addSelectionListener(this);
}
public void selectEntity(Entity entity) {
@@ -81,9 +96,51 @@ public class NavigationView extends ViewPart {
setFocus(); // this ensures that the "selection changed" event gets fired
}
-
@Override
public void setFocus() {
treeViewer.getControl().setFocus();
}
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.ui.ISelectionListener#selectionChanged(org.eclipse.ui.IWorkbenchPart,
+ * org.eclipse.jface.viewers.ISelection)
+ */
+ @Override
+ public void selectionChanged(IWorkbenchPart part, ISelection selection) {
+ if (part instanceof NavigationView && selection instanceof TreeSelection) {
+ Entity selectedEntity = (Entity) ((TreeSelection) selection).getFirstElement();
+
+ if (entity == selectedEntity || selectedEntity == null) {
+ // entity selection has not changed. do nothing.
+ return;
+ }
+
+ IViewReference[] viewReferences = getSite().getPage().getViewReferences();
+ for (final IViewReference viewReference : viewReferences) {
+ if (!viewReference.getId().equals(ID)) {
+ PlatformUI
+ .getWorkbench()
+ .getActiveWorkbenchWindow()
+ .getActivePage()
+ .hideView(
+ PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage()
+ .findViewReference(DiscoveredServersView.ID));
+ }
+ }
+
+ entity = selectedEntity;
+ if (entity instanceof EntityGroup) {
+ Class type = ((EntityGroup) entity).getEntityType();
+ if (type == Server.class) {
+ try {
+ getSite().getPage().showView(DiscoveredServersView.ID);
+ } catch (PartInitException e) {
+ e.printStackTrace();
+ }
+ }
+ }
+ }
+ }
}