diff options
| author | Shireesh Anjal <shireesh@gluster.com> | 2011-03-17 19:20:32 +0530 |
|---|---|---|
| committer | Shireesh Anjal <shireesh@gluster.com> | 2011-03-17 19:22:29 +0530 |
| commit | d7fc89bed7cb7997a31d19004d3e590cd2e9185a (patch) | |
| tree | 7272eb63ee40957f9b00b1055b49775e451f5328 /com.gluster.storage.management.gui/src | |
| parent | 4cbbb21b0efefabbc587d3fd5cb643e85c3b42d3 (diff) | |
Converting tabs to view
Diffstat (limited to 'com.gluster.storage.management.gui/src')
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(); + } + } + } + } + } } |
