summaryrefslogtreecommitdiffstats
path: root/src/com.gluster.storage.management.gui
diff options
context:
space:
mode:
authorShireesh Anjal <shireesh@gluster.com>2011-05-25 18:12:48 +0530
committerShireesh Anjal <shireesh@gluster.com>2011-05-30 12:20:17 +0530
commit66eeb6a273b1a60813375a4bf55bcc38e1a3d00a (patch)
tree74826193b1f83e558768e04b97da1c054e8cf259 /src/com.gluster.storage.management.gui
parent4435678fe7c1ca8f857dd008088b3d33ddec0484 (diff)
Design changes - introducing cluster-server mapping on gateway
Diffstat (limited to 'src/com.gluster.storage.management.gui')
-rw-r--r--src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/Application.java2
-rw-r--r--src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/NetworkInterfaceTableLabelProvider.java2
-rw-r--r--src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/CreateVolumeAction.java14
-rw-r--r--src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/dialogs/ClusterSelectionDialog.java177
-rw-r--r--src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/dialogs/LoginDialog.java (renamed from src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/login/LoginDialog.java)53
-rw-r--r--src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/utils/PieChartViewerComposite.java (renamed from src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/details/tabcreators/PieChartViewerComposite.java)3
-rw-r--r--src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/ClusterSummaryView.java2
-rw-r--r--src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/GlusterServersSummaryView.java2
-rw-r--r--src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/VolumesSummaryView.java2
-rw-r--r--src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/details/tabcreators/ClusterTabCreator.java146
-rw-r--r--src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/details/tabcreators/EntityGroupGlusterServerTabCreator.java136
-rw-r--r--src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/details/tabcreators/EntityGroupServerTabCreator.java60
-rw-r--r--src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/details/tabcreators/EntityGroupVolumeTabCreator.java117
-rw-r--r--src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/details/tabcreators/GlusterServerTabCreator.java265
-rw-r--r--src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/details/tabcreators/ServerTabCreator.java73
-rw-r--r--src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/details/tabcreators/VolumeTabCreator.java270
16 files changed, 247 insertions, 1077 deletions
diff --git a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/Application.java b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/Application.java
index 47f2cfd9..0e269c3a 100644
--- a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/Application.java
+++ b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/Application.java
@@ -34,7 +34,7 @@ import org.eclipse.ui.IWorkbench;
import org.eclipse.ui.PlatformUI;
import com.gluster.storage.management.core.model.Entity;
-import com.gluster.storage.management.gui.login.LoginDialog;
+import com.gluster.storage.management.gui.dialogs.LoginDialog;
/**
* This class controls all aspects of the application's execution
diff --git a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/NetworkInterfaceTableLabelProvider.java b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/NetworkInterfaceTableLabelProvider.java
index 78f703ea..4f303ff4 100644
--- a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/NetworkInterfaceTableLabelProvider.java
+++ b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/NetworkInterfaceTableLabelProvider.java
@@ -21,7 +21,7 @@ package com.gluster.storage.management.gui;
import com.gluster.storage.management.core.constants.CoreConstants;
import com.gluster.storage.management.core.model.NetworkInterface;
-import com.gluster.storage.management.gui.views.details.tabcreators.GlusterServerTabCreator.NETWORK_INTERFACE_TABLE_COLUMN_INDICES;
+import com.gluster.storage.management.gui.views.GlusterServerSummaryView.NETWORK_INTERFACE_TABLE_COLUMN_INDICES;
public class NetworkInterfaceTableLabelProvider extends TableLabelProviderAdapter {
@Override
diff --git a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/CreateVolumeAction.java b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/CreateVolumeAction.java
index 7f06bc96..1b412617 100644
--- a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/CreateVolumeAction.java
+++ b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/CreateVolumeAction.java
@@ -19,8 +19,11 @@
package com.gluster.storage.management.gui.actions;
import org.eclipse.jface.action.IAction;
+import org.eclipse.jface.dialogs.IDialogConstants;
import org.eclipse.jface.viewers.ISelection;
import org.eclipse.jface.wizard.WizardDialog;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Display;
import com.gluster.storage.management.core.model.EntityGroup;
@@ -36,7 +39,16 @@ public class CreateVolumeAction extends AbstractActionDelegate {
public void run() {
CreateVolumeWizard wizard = new CreateVolumeWizard();
- WizardDialog dialog = new WizardDialog(getShell(), wizard);
+ WizardDialog dialog = new WizardDialog(getShell(), wizard) {
+ @Override
+ protected Button createButton(Composite parent, int id, String label, boolean defaultButton) {
+ Button button = super.createButton(parent, id, label, defaultButton);
+ if(id == IDialogConstants.FINISH_ID) {
+ button.setText("&Create");
+ }
+ return button;
+ }
+ };
dialog.create();
dialog.getShell().setSize(500, 550);
dialog.open();
diff --git a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/dialogs/ClusterSelectionDialog.java b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/dialogs/ClusterSelectionDialog.java
new file mode 100644
index 00000000..7bc6eb58
--- /dev/null
+++ b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/dialogs/ClusterSelectionDialog.java
@@ -0,0 +1,177 @@
+/*******************************************************************************
+ * 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.dialogs;
+
+import java.util.List;
+
+import org.eclipse.jface.dialogs.Dialog;
+import org.eclipse.jface.dialogs.IDialogConstants;
+import org.eclipse.jface.fieldassist.ControlDecoration;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.ModifyEvent;
+import org.eclipse.swt.events.ModifyListener;
+import org.eclipse.swt.events.TraverseEvent;
+import org.eclipse.swt.events.TraverseListener;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Combo;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.Shell;
+
+import com.gluster.storage.management.gui.IImageKeys;
+import com.gluster.storage.management.gui.utils.GUIHelper;
+
+/**
+ * Cluster selection dialog, which prompts for the cluster name to be managed
+ */
+public class ClusterSelectionDialog extends Dialog {
+ private Combo clusterNameCombo = null;
+ private Button okButton;
+
+ private final GUIHelper guiHelper = GUIHelper.getInstance();
+ private Composite composite;
+ private ControlDecoration errorDecoration;
+ private List<String> clusters;
+ private String clusterName;
+
+ public ClusterSelectionDialog(Shell parentShell, List<String> clusters) {
+ super(parentShell);
+ this.clusters = clusters;
+ }
+
+ @Override
+ protected void configureShell(Shell newShell) {
+ super.configureShell(newShell);
+
+ newShell.setText("Gluster Management Console - Select Cluster");
+ addEscapeListener(newShell);
+ }
+
+ private void addEscapeListener(Shell shell) {
+ shell.addTraverseListener(new TraverseListener() {
+
+ @Override
+ public void keyTraversed(TraverseEvent e) {
+ if (e.keyCode == SWT.ESC) {
+ cancelPressed();
+ }
+ }
+ });
+ }
+
+ private void createClusterNameLabel(Composite composite) {
+ Label userIdLabel = new Label(composite, SWT.NONE);
+ userIdLabel.setText("&Cluster to Manage:");
+ userIdLabel.setLayoutData(new GridData(GridData.END, GridData.CENTER, false, false));
+ }
+
+ private void createClusterNameCombo(Composite composite) {
+ clusterNameCombo = new Combo(composite, SWT.BORDER);
+ clusterNameCombo.setItems(clusters.toArray(new String[0]));
+ clusterNameCombo.select(0);
+
+// GridData layoutData = new GridData(SWT.FILL, GridData.FILL, true, false);
+// layoutData.widthHint = convertWidthInCharsToPixels(32);
+// clusterNameCombo.setLayoutData(layoutData);
+ }
+
+ private void configureDialogLayout(Composite composite) {
+ GridLayout layout = (GridLayout) composite.getLayout();
+ layout.numColumns = 2;
+ layout.marginLeft = 20;
+ layout.marginRight = 20;
+ layout.marginTop = 20;
+ layout.horizontalSpacing = 20;
+ layout.verticalSpacing = 20;
+ }
+
+ /**
+ * Overriding to make sure that the dialog is centered in screen
+ */
+ @Override
+ protected void initializeBounds() {
+ super.initializeBounds();
+
+ guiHelper.centerShellInScreen(getShell());
+ }
+
+ @Override
+ protected Control createDialogArea(Composite parent) {
+ parent.setBackgroundImage(guiHelper.getImage(IImageKeys.DIALOG_SPLASH_IMAGE));
+ // Makes sure that child composites inherit the same background
+ parent.setBackgroundMode(SWT.INHERIT_FORCE);
+
+ composite = (Composite) super.createDialogArea(parent);
+ configureDialogLayout(composite);
+
+ createClusterNameLabel(composite);
+ createClusterNameCombo(composite);
+ createErrorDecoration();
+
+ return composite;
+ }
+
+ @Override
+ protected void createButtonsForButtonBar(Composite parent) {
+ okButton = createButton(parent, IDialogConstants.OK_ID, IDialogConstants.OK_LABEL, true);
+ createButton(parent, IDialogConstants.CANCEL_ID, IDialogConstants.CANCEL_LABEL, false);
+
+ setupDataBinding();
+ }
+
+ private void createErrorDecoration() {
+ errorDecoration = guiHelper.createErrorDecoration(clusterNameCombo);
+ errorDecoration.setDescriptionText("Please select an existing cluster name, or enter a new one!");
+ errorDecoration.hide();
+ }
+
+ /**
+ * Sets up data binding between the text fields and the connection details object. Also attaches a "string required"
+ * validator to the "password" text field. This validator is configured to do the following on validation failure<br>
+ * <li>show an ERROR decorator</li><li>disable the "Login" button
+ */
+ private void setupDataBinding() {
+ clusterNameCombo.addModifyListener(new ModifyListener() {
+
+ @Override
+ public void modifyText(ModifyEvent e) {
+ if(clusterNameCombo.getText().trim().isEmpty()) {
+ okButton.setEnabled(false);
+ errorDecoration.show();
+ } else {
+ okButton.setEnabled(true);
+ errorDecoration.hide();
+ }
+ }
+ });
+ }
+
+ @Override
+ protected void okPressed() {
+ clusterName = clusterNameCombo.getText();
+ super.okPressed();
+ }
+
+ public String getClusterName() {
+ return clusterName;
+ }
+}
diff --git a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/login/LoginDialog.java b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/dialogs/LoginDialog.java
index 7705a631..947a8747 100644
--- a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/login/LoginDialog.java
+++ b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/dialogs/LoginDialog.java
@@ -16,7 +16,10 @@
* along with this program. If not, see
* <http://www.gnu.org/licenses/>.
*******************************************************************************/
-package com.gluster.storage.management.gui.login;
+package com.gluster.storage.management.gui.dialogs;
+
+import java.util.ArrayList;
+import java.util.List;
import org.eclipse.core.databinding.DataBindingContext;
import org.eclipse.core.databinding.UpdateValueStrategy;
@@ -26,6 +29,7 @@ import org.eclipse.jface.databinding.swt.WidgetProperties;
import org.eclipse.jface.dialogs.Dialog;
import org.eclipse.jface.dialogs.IDialogConstants;
import org.eclipse.jface.dialogs.MessageDialog;
+import org.eclipse.jface.window.Window;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.TraverseEvent;
import org.eclipse.swt.events.TraverseListener;
@@ -39,9 +43,13 @@ import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.Text;
+import com.gluster.storage.management.client.ClustersClient;
import com.gluster.storage.management.client.GlusterDataModelManager;
import com.gluster.storage.management.client.UsersClient;
+import com.gluster.storage.management.core.exceptions.GlusterRuntimeException;
import com.gluster.storage.management.core.model.ConnectionDetails;
+import com.gluster.storage.management.core.model.Status;
+import com.gluster.storage.management.core.response.StringListResponse;
import com.gluster.storage.management.gui.IImageKeys;
import com.gluster.storage.management.gui.utils.GUIHelper;
import com.gluster.storage.management.gui.validators.StringRequiredValidator;
@@ -192,9 +200,35 @@ public class LoginDialog extends Dialog {
UsersClient usersClient = new UsersClient();
if (usersClient.authenticate(user, password).isSuccess()) {
+ close();
+ ClustersClient clustersClient = new ClustersClient(usersClient.getSecurityToken());
+ List<String> clusterNames = getClusterNames(clustersClient);
+ ClusterSelectionDialog clusterDialog = new ClusterSelectionDialog(getParentShell(),
+ clusterNames);
+ int userAction = clusterDialog.open();
+ if (userAction == Window.CANCEL) {
+ MessageDialog.openError(getShell(), "Login Cancelled",
+ "User cancelled login at cluster selection. Application will close!");
+ cancelPressed();
+ return;
+ }
try {
- GlusterDataModelManager.getInstance().initializeModel(usersClient.getSecurityToken(), "127.0.0.1");
+ String clusterName = clusterDialog.getClusterName();
+ if(clusterNames.contains(clusterName)) {
+ GlusterDataModelManager.getInstance().initializeModel(usersClient.getSecurityToken(),
+ clusterName);
+ } else {
+ Status status = createCluster(clustersClient, clusterName);
+ if(!status.isSuccess()) {
+ MessageDialog.openError(getShell(), "Cluster Creation Failed!", status.toString());
+ setReturnCode(RETURN_CODE_ERROR);
+ return;
+ }
+ GlusterDataModelManager.getInstance().initializeModelWithNewCluster(usersClient.getSecurityToken(),
+ clusterName);
+ }
super.okPressed();
+
} catch (Exception e) {
setReturnCode(RETURN_CODE_ERROR);
MessageDialog.openError(getShell(), "Initialization Error", e.getMessage());
@@ -204,4 +238,19 @@ public class LoginDialog extends Dialog {
MessageDialog.openError(getShell(), "Authentication Failed", "Invalid User ID or password");
}
}
+
+ private Status createCluster(ClustersClient clustersClient, String clusterName) {
+ return clustersClient.createCluster(clusterName);
+ }
+
+ private List<String> getClusterNames(ClustersClient clustersClient) {
+ StringListResponse clustersResponse = clustersClient.getClusters();
+ List<String> clusters = new ArrayList<String>();
+ if (clustersResponse.getStatus().isSuccess()) {
+ clusters = clustersResponse.getData();
+ } else {
+ throw new GlusterRuntimeException("Could not fetch cluster names. Error: " + clustersResponse.getStatus());
+ }
+ return clusters;
+ }
}
diff --git a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/details/tabcreators/PieChartViewerComposite.java b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/utils/PieChartViewerComposite.java
index 4e3d808a..ad8e2fa3 100644
--- a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/details/tabcreators/PieChartViewerComposite.java
+++ b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/utils/PieChartViewerComposite.java
@@ -16,7 +16,7 @@
* along with this program. If not, see
* <http://www.gnu.org/licenses/>.
*******************************************************************************/
-package com.gluster.storage.management.gui.views.details.tabcreators;
+package com.gluster.storage.management.gui.utils;
import java.util.logging.Level;
import java.util.logging.Logger;
@@ -57,7 +57,6 @@ import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.graphics.Rectangle;
import org.eclipse.swt.widgets.Composite;
-import com.gluster.storage.management.gui.utils.GlusterChartPalette;
/**
*
diff --git a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/ClusterSummaryView.java b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/ClusterSummaryView.java
index c37bcd76..efecbf7a 100644
--- a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/ClusterSummaryView.java
+++ b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/ClusterSummaryView.java
@@ -54,7 +54,7 @@ import com.gluster.storage.management.core.utils.NumberUtil;
import com.gluster.storage.management.gui.IImageKeys;
import com.gluster.storage.management.gui.actions.IActionConstants;
import com.gluster.storage.management.gui.utils.GUIHelper;
-import com.gluster.storage.management.gui.views.details.tabcreators.PieChartViewerComposite;
+import com.gluster.storage.management.gui.utils.PieChartViewerComposite;
/**
* @author root
diff --git a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/GlusterServersSummaryView.java b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/GlusterServersSummaryView.java
index 080ebace..ba9faca4 100644
--- a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/GlusterServersSummaryView.java
+++ b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/GlusterServersSummaryView.java
@@ -34,7 +34,7 @@ import com.gluster.storage.management.core.model.EntityGroup;
import com.gluster.storage.management.core.model.GlusterServer;
import com.gluster.storage.management.core.model.GlusterServer.SERVER_STATUS;
import com.gluster.storage.management.gui.utils.GUIHelper;
-import com.gluster.storage.management.gui.views.details.tabcreators.PieChartViewerComposite;
+import com.gluster.storage.management.gui.utils.PieChartViewerComposite;
/**
*
diff --git a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/VolumesSummaryView.java b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/VolumesSummaryView.java
index bc136b61..88ca96c5 100644
--- a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/VolumesSummaryView.java
+++ b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/VolumesSummaryView.java
@@ -39,7 +39,7 @@ import com.gluster.storage.management.core.model.Volume;
import com.gluster.storage.management.core.model.Volume.VOLUME_STATUS;
import com.gluster.storage.management.gui.IImageKeys;
import com.gluster.storage.management.gui.utils.GUIHelper;
-import com.gluster.storage.management.gui.views.details.tabcreators.PieChartViewerComposite;
+import com.gluster.storage.management.gui.utils.PieChartViewerComposite;
/**
*
diff --git a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/details/tabcreators/ClusterTabCreator.java b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/details/tabcreators/ClusterTabCreator.java
deleted file mode 100644
index 571afb2e..00000000
--- a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/details/tabcreators/ClusterTabCreator.java
+++ /dev/null
@@ -1,146 +0,0 @@
-/*******************************************************************************
- * 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.details.tabcreators;
-
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.layout.GridData;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.TabFolder;
-import org.eclipse.ui.IWorkbenchSite;
-import org.eclipse.ui.forms.events.HyperlinkAdapter;
-import org.eclipse.ui.forms.widgets.FormToolkit;
-import org.eclipse.ui.forms.widgets.ImageHyperlink;
-import org.eclipse.ui.forms.widgets.ScrolledForm;
-
-import com.gluster.storage.management.core.model.Cluster;
-import com.gluster.storage.management.core.model.Entity;
-import com.gluster.storage.management.core.model.GlusterServer;
-import com.gluster.storage.management.core.model.GlusterServer.SERVER_STATUS;
-import com.gluster.storage.management.core.model.Volume;
-import com.gluster.storage.management.core.model.Volume.VOLUME_STATUS;
-import com.gluster.storage.management.gui.IImageKeys;
-import com.gluster.storage.management.gui.utils.GUIHelper;
-import com.gluster.storage.management.gui.views.details.TabCreator;
-
-public class ClusterTabCreator implements TabCreator {
- private GUIHelper guiHelper = GUIHelper.getInstance();
-
- private int getVolumeCountByStatus(Cluster cluster, VOLUME_STATUS status) {
- int count = 0;
- for (Volume volume : cluster.getVolumes()) {
- if (volume.getStatus() == status) {
- count++;
- }
- }
- return count;
- }
-
- private int getServerCountByStatus(Cluster cluster, SERVER_STATUS status) {
- int count = 0;
- for (GlusterServer server : cluster.getServers()) {
- if (server.getStatus() == status) {
- count++;
- }
- }
- return count;
- }
-
- private void createVolumesSection(Cluster cluster, FormToolkit toolkit, final ScrolledForm form) {
- Composite section = guiHelper.createSection(form, toolkit, "Volumes", null, 1, false);
-
- // toolkit.createLabel(sectionClient, "Number of Volumes: ", SWT.NONE);
- // toolkit.createLabel(sectionClient, "12", SWT.NONE);
- //
- // toolkit.createLabel(sectionClient, "Online: ", SWT.NONE);
- // Label labelOnlineCount = toolkit.createLabel(sectionClient, "9", SWT.NONE);
- // labelOnlineCount.setForeground(SWTResourceManager.getColor(SWT.COLOR_DARK_GREEN));
- //
- // toolkit.createLabel(sectionClient, "Offline: ", SWT.NONE);
- // Label lblOfflineCount = toolkit.createLabel(sectionClient, "3", SWT.NONE);
- // lblOfflineCount.setForeground(SWTResourceManager.getColor(SWT.COLOR_RED));
-
- Double[] values = new Double[] { Double.valueOf(getVolumeCountByStatus(cluster, VOLUME_STATUS.ONLINE)),
- Double.valueOf(getVolumeCountByStatus(cluster, VOLUME_STATUS.OFFLINE)) };
- createStatusChart(toolkit, section, values);
- }
-
- private void createServersSection(Cluster cluster, FormToolkit toolkit, final ScrolledForm form) {
- Composite section = guiHelper.createSection(form, toolkit, "Servers", null, 1, false);
-
-// toolkit.createLabel(sectionClient, "Number of Servers: ", SWT.NONE);
-// toolkit.createLabel(sectionClient, "7", SWT.NONE);
-//
-// toolkit.createLabel(sectionClient, "Online: ", SWT.NONE);
-// Label labelOnlineCount = toolkit.createLabel(sectionClient, "6", SWT.NONE);
-// labelOnlineCount.setForeground(SWTResourceManager.getColor(SWT.COLOR_DARK_GREEN));
-//
-// toolkit.createLabel(sectionClient, "Offline: ", SWT.NONE);
-// Label lblOfflineCount = toolkit.createLabel(sectionClient, "1", SWT.NONE);
-// lblOfflineCount.setForeground(SWTResourceManager.getColor(SWT.COLOR_RED));
-
- Double[] values = new Double[] { Double.valueOf(getServerCountByStatus(cluster, SERVER_STATUS.ONLINE)),
- Double.valueOf(getServerCountByStatus(cluster, SERVER_STATUS.OFFLINE)) };
-
- createStatusChart(toolkit, section, values);
- }
-
- private void createStatusChart(FormToolkit toolkit, Composite section, Double[] values) {
- String[] categories = new String[] { "Online", "Offline" };
- PieChartViewerComposite chartViewerComposite = new PieChartViewerComposite(section, SWT.NONE, categories, values);
-
- GridData data = new GridData(SWT.FILL, SWT.FILL, true, true);
- data.widthHint = 250;
- data.heightHint = 250;
- chartViewerComposite.setLayoutData(data);
- }
-
- private void createActionsSection(final Cluster cluster, final FormToolkit toolkit, final ScrolledForm form) {
- Composite section = guiHelper.createSection(form, toolkit, "Actions", null, 1, false);
-
- ImageHyperlink imageHyperlink = toolkit.createImageHyperlink(section, SWT.NONE);
- imageHyperlink.setText("Create Volume");
- imageHyperlink.setImage(guiHelper.getImage(IImageKeys.CREATE_VOLUME_BIG));
- imageHyperlink.addHyperlinkListener(new HyperlinkAdapter() {
- // TODO: Override appropriate method and handle hyperlink event
- });
-
- imageHyperlink = toolkit.createImageHyperlink(section, SWT.NONE);
- imageHyperlink.setText("Add Server(s)");
- imageHyperlink.setImage(guiHelper.getImage(IImageKeys.ADD_SERVER_BIG));
- imageHyperlink.addHyperlinkListener(new HyperlinkAdapter() {
- // TODO: Override appropriate method and handle hyperlink event
- });
- }
-
- private void createClusterSummaryTab(final Cluster cluster, final TabFolder tabFolder, final FormToolkit toolkit) {
- Composite summaryTab = guiHelper.createTab(tabFolder, cluster.getName(), IImageKeys.CLUSTER);
-
- final ScrolledForm form = guiHelper.setupForm(summaryTab, toolkit, "Cluster Summary");
- createVolumesSection(cluster, toolkit, form);
- createServersSection(cluster, toolkit, form);
- createActionsSection(cluster, toolkit, form);
-
- summaryTab.layout(); // IMP: lays out the form properly
- }
-
- @Override
- public void createTabs(Entity entity, TabFolder tabFolder, FormToolkit toolkit, IWorkbenchSite site) {
- createClusterSummaryTab((Cluster) entity, tabFolder, toolkit);
- }
-}
diff --git a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/details/tabcreators/EntityGroupGlusterServerTabCreator.java b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/details/tabcreators/EntityGroupGlusterServerTabCreator.java
deleted file mode 100644
index 3c94c3cc..00000000
--- a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/details/tabcreators/EntityGroupGlusterServerTabCreator.java
+++ /dev/null
@@ -1,136 +0,0 @@
-/*******************************************************************************
- * 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.details.tabcreators;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.eclipse.jface.viewers.DoubleClickEvent;
-import org.eclipse.jface.viewers.IDoubleClickListener;
-import org.eclipse.jface.viewers.StructuredSelection;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.layout.GridData;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.TabFolder;
-import org.eclipse.ui.IWorkbenchSite;
-import org.eclipse.ui.forms.widgets.FormToolkit;
-import org.eclipse.ui.forms.widgets.ScrolledForm;
-
-import com.gluster.storage.management.core.model.Disk;
-import com.gluster.storage.management.core.model.Entity;
-import com.gluster.storage.management.core.model.EntityGroup;
-import com.gluster.storage.management.core.model.GlusterServer;
-import com.gluster.storage.management.core.model.GlusterServer.SERVER_STATUS;
-import com.gluster.storage.management.gui.IImageKeys;
-import com.gluster.storage.management.gui.utils.GUIHelper;
-import com.gluster.storage.management.gui.views.NavigationView;
-import com.gluster.storage.management.gui.views.details.DisksPage;
-import com.gluster.storage.management.gui.views.details.GlusterServersPage;
-import com.gluster.storage.management.gui.views.details.TabCreator;
-
-public class EntityGroupGlusterServerTabCreator implements TabCreator, IDoubleClickListener {
- private static final GUIHelper guiHelper = GUIHelper.getInstance();
-
- private int getServerCountByStatus(EntityGroup<GlusterServer> servers, SERVER_STATUS status) {
- int count = 0;
- for (GlusterServer server : (List<GlusterServer>)servers.getEntities()) {
- if (server.getStatus() == status) {
- count++;
- }
- }
- return count;
- }
-
- private void createAlertsSection(final EntityGroup<GlusterServer> servers, FormToolkit toolkit, final ScrolledForm form) {
- Composite section = guiHelper.createSection(form, toolkit, "Alerts", null, 2, false);
-
- toolkit.createLabel(section, "Any alerts related to servers\nwill be displayed here.");
- }
-
- private void createRunningTasksSection(final EntityGroup<GlusterServer> servers, FormToolkit toolkit, final ScrolledForm form) {
- Composite section = guiHelper.createSection(form, toolkit, "Running Tasks", null, 2, false);
-
- toolkit.createLabel(section, "List of running tasks related to\nservers will be displayed here.");
- }
-
- @Override
- public void createTabs(Entity entity, TabFolder tabFolder, FormToolkit toolkit, IWorkbenchSite site) {
- createSummaryTab((EntityGroup<GlusterServer>)entity, tabFolder, toolkit);
- createServersTab((EntityGroup<GlusterServer>)entity, tabFolder, toolkit);
- createDisksTab((EntityGroup<GlusterServer>)entity, tabFolder, toolkit, site);
- }
-
- private void createServersTab(EntityGroup<GlusterServer> servers, TabFolder tabFolder, FormToolkit toolkit) {
- Composite serversTab = guiHelper.createTab(tabFolder, "Servers", IImageKeys.SERVERS);
- GlusterServersPage page = new GlusterServersPage(serversTab, SWT.NONE, servers);
- page.addDoubleClickListener(this);
- }
-
- private void createSummaryTab(EntityGroup<GlusterServer> servers, TabFolder tabFolder, FormToolkit toolkit) {
- Composite summaryTab = guiHelper.createTab(tabFolder, "Summary", IImageKeys.SERVERS);
- final ScrolledForm form = guiHelper.setupForm(summaryTab, toolkit, "Servers - Summary");
- createSummarySection(servers, toolkit, form);
- createRunningTasksSection(servers, toolkit, form);
- createAlertsSection(servers, toolkit, form);
-
- summaryTab.layout(); // IMP: lays out the form properly
- }
-
- private void createSummarySection(final EntityGroup<GlusterServer> servers, FormToolkit toolkit, final ScrolledForm form) {
- Composite section = guiHelper.createSection(form, toolkit, "Availability", null, 2, false);
-
- Double[] values = new Double[] { Double.valueOf(getServerCountByStatus(servers, SERVER_STATUS.ONLINE)),
- Double.valueOf(getServerCountByStatus(servers, SERVER_STATUS.OFFLINE)) };
- createStatusChart(toolkit, section, values);
- }
-
- private void createStatusChart(FormToolkit toolkit, Composite section, Double[] values) {
- String[] categories = new String[] { "Online", "Offline" };
- PieChartViewerComposite chartViewerComposite = new PieChartViewerComposite(section, SWT.NONE, categories, values);
-
- GridData data = new GridData(SWT.FILL, SWT.FILL, true, true);
- data.widthHint = 250;
- data.heightHint = 250;
- chartViewerComposite.setLayoutData(data);
- }
-
-
- private void createDisksTab(EntityGroup<GlusterServer> servers, TabFolder tabFolder, FormToolkit toolkit, IWorkbenchSite site) {
- Composite disksTab = guiHelper.createTab(tabFolder, "Disks", IImageKeys.SERVERS);
- DisksPage page = new DisksPage(disksTab, SWT.NONE, site, getAllDisks(servers));
-
- disksTab.layout(); // IMP: lays out the form properly
- }
-
- private List<Disk> getAllDisks(EntityGroup<GlusterServer> servers) {
- List<Disk> disks = new ArrayList<Disk>();
- for(GlusterServer server : (List<GlusterServer>)servers.getEntities()) {
- disks.addAll(server.getDisks());
- }
- return disks;
- }
-
- @Override
- public void doubleClick(DoubleClickEvent event) {
- NavigationView clusterView = (NavigationView) guiHelper.getView(NavigationView.ID);
- if (clusterView != null) {
- clusterView.selectEntity((Entity) ((StructuredSelection) event.getSelection()).getFirstElement());
- }
- }
-}
diff --git a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/details/tabcreators/EntityGroupServerTabCreator.java b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/details/tabcreators/EntityGroupServerTabCreator.java
deleted file mode 100644
index 3f49ba6b..00000000
--- a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/details/tabcreators/EntityGroupServerTabCreator.java
+++ /dev/null
@@ -1,60 +0,0 @@
-/*******************************************************************************
- * 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.details.tabcreators;
-
-import org.eclipse.jface.viewers.DoubleClickEvent;
-import org.eclipse.jface.viewers.IDoubleClickListener;
-import org.eclipse.jface.viewers.StructuredSelection;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.TabFolder;
-import org.eclipse.ui.IWorkbenchSite;
-import org.eclipse.ui.forms.widgets.FormToolkit;
-
-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.IImageKeys;
-import com.gluster.storage.management.gui.utils.GUIHelper;
-import com.gluster.storage.management.gui.views.NavigationView;
-import com.gluster.storage.management.gui.views.details.TabCreator;
-import com.gluster.storage.management.gui.views.pages.ServersPage;
-
-public class EntityGroupServerTabCreator implements TabCreator, IDoubleClickListener {
- private static final GUIHelper guiHelper = GUIHelper.getInstance();
-
- @Override
- public void createTabs(Entity entity, TabFolder tabFolder, FormToolkit toolkit, IWorkbenchSite site) {
- createServersTab((EntityGroup<Server>) entity, tabFolder);
- }
-
- private void createServersTab(EntityGroup<Server> servers, TabFolder tabFolder) {
- Composite serversTab = guiHelper.createTab(tabFolder, "Discovered Servers", IImageKeys.SERVERS);
- ServersPage page = new ServersPage(serversTab, null, servers);
- page.addDoubleClickListener(this);
- }
-
- @Override
- public void doubleClick(DoubleClickEvent event) {
- NavigationView clusterView = (NavigationView) guiHelper.getView(NavigationView.ID);
- if (clusterView != null) {
- clusterView.selectEntity((Entity) ((StructuredSelection) event.getSelection()).getFirstElement());
- }
- }
-}
diff --git a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/details/tabcreators/EntityGroupVolumeTabCreator.java b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/details/tabcreators/EntityGroupVolumeTabCreator.java
deleted file mode 100644
index 22ffd94d..00000000
--- a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/details/tabcreators/EntityGroupVolumeTabCreator.java
+++ /dev/null
@@ -1,117 +0,0 @@
-/*******************************************************************************
- * 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.details.tabcreators;
-
-import java.util.List;
-
-import org.eclipse.jface.viewers.DoubleClickEvent;
-import org.eclipse.jface.viewers.IDoubleClickListener;
-import org.eclipse.jface.viewers.StructuredSelection;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.layout.GridData;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.TabFolder;
-import org.eclipse.ui.IWorkbenchSite;
-import org.eclipse.ui.forms.widgets.FormToolkit;
-import org.eclipse.ui.forms.widgets.ScrolledForm;
-
-import com.gluster.storage.management.core.model.Entity;
-import com.gluster.storage.management.core.model.EntityGroup;
-import com.gluster.storage.management.core.model.Volume;
-import com.gluster.storage.management.core.model.Volume.VOLUME_STATUS;
-import com.gluster.storage.management.gui.IImageKeys;
-import com.gluster.storage.management.gui.utils.GUIHelper;
-import com.gluster.storage.management.gui.views.NavigationView;
-import com.gluster.storage.management.gui.views.details.TabCreator;
-import com.gluster.storage.management.gui.views.pages.VolumesPage;
-
-public class EntityGroupVolumeTabCreator implements TabCreator, IDoubleClickListener {
- private static final GUIHelper guiHelper = GUIHelper.getInstance();
-
- @Override
- public void createTabs(Entity entity, TabFolder tabFolder, FormToolkit toolkit, IWorkbenchSite site) {
- createSummaryTab((EntityGroup<Volume>) entity, tabFolder, toolkit);
- createVolumesTab((EntityGroup<Volume>) entity, tabFolder, toolkit);
- }
-
- private int getVolumeCountByStatus(EntityGroup<Volume> volumes, VOLUME_STATUS status) {
- int count = 0;
- for (Volume volume : (List<Volume>) volumes.getEntities()) {
- if (volume.getStatus() == status) {
- count++;
- }
- }
- return count;
- }
-
- private void createStatusChart(FormToolkit toolkit, Composite section, Double[] values) {
- String[] categories = new String[] { "Online", "Offline" };
- PieChartViewerComposite chartViewerComposite = new PieChartViewerComposite(section, SWT.NONE, categories,
- values);
-
- GridData data = new GridData(SWT.FILL, SWT.FILL, true, true);
- data.widthHint = 250;
- data.heightHint = 250;
- chartViewerComposite.setLayoutData(data);
- }
-
- private void createAlertsSection(final EntityGroup<Volume> volumes, FormToolkit toolkit, final ScrolledForm form) {
- Composite section = guiHelper.createSection(form, toolkit, "Alerts", null, 2, false);
-
- toolkit.createLabel(section, "Any alerts related to volumes\nwill be displayed here.");
- }
-
- private void createRunningTasksSection(final EntityGroup<Volume> volumes, FormToolkit toolkit, final ScrolledForm form) {
- Composite section = guiHelper.createSection(form, toolkit, "Running Tasks", null, 2, false);
-
- toolkit.createLabel(section, "List of running tasks related to\nvolumes will be displayed here.");
- }
-
- private void createSummarySection(final EntityGroup<Volume> volumes, FormToolkit toolkit, final ScrolledForm form) {
- Composite section = guiHelper.createSection(form, toolkit, "Availability", null, 2, false);
-
- Double[] values = new Double[] { Double.valueOf(getVolumeCountByStatus(volumes, VOLUME_STATUS.ONLINE)),
- Double.valueOf(getVolumeCountByStatus(volumes, VOLUME_STATUS.OFFLINE)) };
- createStatusChart(toolkit, section, values);
- }
-
- private void createSummaryTab(final EntityGroup<Volume> volumes, TabFolder tabFolder, FormToolkit toolkit) {
- Composite summaryTab = guiHelper.createTab(tabFolder, "Summary", IImageKeys.VOLUMES);
- final ScrolledForm form = guiHelper.setupForm(summaryTab, toolkit, "Volumes - Summary");
- createSummarySection(volumes, toolkit, form);
- createRunningTasksSection(volumes, toolkit, form);
- createAlertsSection(volumes, toolkit, form);
-
- summaryTab.layout(); // IMP: lays out the form properly
- }
-
- private void createVolumesTab(EntityGroup<Volume> volumes, TabFolder tabFolder, FormToolkit toolkit) {
- Composite volumesTab = guiHelper.createTab(tabFolder, "Volumes", IImageKeys.VOLUMES);
- VolumesPage page = new VolumesPage(volumesTab, null, volumes);
- page.addDoubleClickListener(this);
- }
-
- @Override
- public void doubleClick(DoubleClickEvent event) {
- NavigationView clusterView = (NavigationView) guiHelper.getView(NavigationView.ID);
- if (clusterView != null) {
- clusterView.selectEntity((Entity) ((StructuredSelection) event.getSelection()).getFirstElement());
- }
- }
-}
diff --git a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/details/tabcreators/GlusterServerTabCreator.java b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/details/tabcreators/GlusterServerTabCreator.java
deleted file mode 100644
index 00318373..00000000
--- a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/details/tabcreators/GlusterServerTabCreator.java
+++ /dev/null
@@ -1,265 +0,0 @@
-/*******************************************************************************
- * 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.details.tabcreators;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.eclipse.jface.dialogs.MessageDialog;
-import org.eclipse.jface.layout.TableColumnLayout;
-import org.eclipse.jface.viewers.ArrayContentProvider;
-import org.eclipse.jface.viewers.ColumnWeightData;
-import org.eclipse.jface.viewers.TableViewer;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.custom.CLabel;
-import org.eclipse.swt.graphics.Point;
-import org.eclipse.swt.layout.FillLayout;
-import org.eclipse.swt.layout.GridData;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.swt.widgets.ProgressBar;
-import org.eclipse.swt.widgets.TabFolder;
-import org.eclipse.swt.widgets.Table;
-import org.eclipse.swt.widgets.TableColumn;
-import org.eclipse.ui.IWorkbenchSite;
-import org.eclipse.ui.forms.events.HyperlinkAdapter;
-import org.eclipse.ui.forms.events.HyperlinkEvent;
-import org.eclipse.ui.forms.widgets.FormToolkit;
-import org.eclipse.ui.forms.widgets.Hyperlink;
-import org.eclipse.ui.forms.widgets.ScrolledForm;
-
-import com.gluster.storage.management.core.model.Entity;
-import com.gluster.storage.management.core.model.GlusterServer;
-import com.gluster.storage.management.core.model.GlusterServer.SERVER_STATUS;
-import com.gluster.storage.management.core.utils.NumberUtil;
-import com.gluster.storage.management.gui.IImageKeys;
-import com.gluster.storage.management.gui.NetworkInterfaceTableLabelProvider;
-import com.gluster.storage.management.gui.utils.GUIHelper;
-import com.gluster.storage.management.gui.views.details.ServerDisksPage;
-import com.gluster.storage.management.gui.views.details.ServerLogsPage;
-import com.gluster.storage.management.gui.views.details.TabCreator;
-import com.richclientgui.toolbox.gauges.CoolGauge;
-
-public class GlusterServerTabCreator implements TabCreator {
- public enum NETWORK_INTERFACE_TABLE_COLUMN_INDICES {
- INTERFACE, MODEL, SPEED, IP_ADDRESS, NETMASK, GATEWAY
- };
-
- private static final String[] NETWORK_INTERFACE_TABLE_COLUMN_NAMES = { "Interface", "Model", "Speed", "IP Address",
- "Netmask", "Gateway" };
- private static final GUIHelper guiHelper = GUIHelper.getInstance();
-
- private void createServerSummarySection(GlusterServer server, FormToolkit toolkit, final ScrolledForm form) {
- Composite section = guiHelper.createSection(form, toolkit, "Summary", null, 2, false);
-
- // toolkit.createLabel(section, "Preferred Network: ", SWT.NONE);
- // toolkit.createLabel(section, server.getPreferredNetworkInterface().getName(), SWT.NONE);
-
- boolean online = server.getStatus() == SERVER_STATUS.ONLINE;
-
- if (online) {
- toolkit.createLabel(section, "Number of CPUs: ", SWT.NONE);
- toolkit.createLabel(section, "" + server.getNumOfCPUs(), SWT.NONE);
-
- // toolkit.createLabel(section, "CPU Usage (%): ", SWT.NONE);
- // toolkit.createLabel(section, online ? "" + server.getCpuUsage() : "NA", SWT.NONE);
-
- toolkit.createLabel(section, "% CPU Usage (avg): ", SWT.NONE);
- CoolGauge gauge = new CoolGauge(section, guiHelper.getImage(IImageKeys.GAUGE_SMALL));
- gauge.setLayoutData(new GridData(SWT.BEGINNING, SWT.BEGINNING, false, false));
- gauge.setGaugeNeedleColour(Display.getDefault().getSystemColor(SWT.COLOR_RED));
- gauge.setGaugeNeedleWidth(2);
- gauge.setGaugeNeedlePivot(new Point(66, 65));
-
- gauge.setPoints(getPnts());
- gauge.setLevel(server.getCpuUsage() / 100);
- gauge.setToolTipText(server.getCpuUsage() + "%");
-
- toolkit.createLabel(section, "Memory Usage: ", SWT.NONE);
- ProgressBar memoryUsageBar = new ProgressBar(section, SWT.SMOOTH);
- memoryUsageBar.setMinimum(0);
- memoryUsageBar.setMaximum((int) Math.round(server.getTotalMemory()));
- memoryUsageBar.setSelection((int) Math.round(server.getMemoryInUse()));
- memoryUsageBar.setToolTipText("Total: " + server.getTotalMemory() + "GB, In Use: "
- + server.getMemoryInUse() + "GB");
-
- // toolkit.createLabel(section, "Memory Usage: ", SWT.NONE);
- // final CoolProgressBar bar = new CoolProgressBar(section,SWT.HORIZONTAL,
- // guiHelper.getImage(IImageKeys.PROGRESS_BAR_LEFT),
- // guiHelper.getImage(IImageKeys.PROGRESS_BAR_FILLED),
- // guiHelper.getImage(IImageKeys.PROGRESS_BAR_EMPTY),
- // guiHelper.getImage(IImageKeys.PROGRESS_BAR_RIGHT));
- // bar.updateProgress(server.getMemoryInUse() / server.getTotalMemory());
-
- // toolkit.createLabel(section, "Total Disk Space (GB): ", SWT.NONE);
- // toolkit.createLabel(section, online ? "" + server.getTotalDiskSpace() : "NA", SWT.NONE);
- //
- // toolkit.createLabel(section, "Disk Space in Use (GB): ", SWT.NONE);
- // toolkit.createLabel(section, online ? "" + server.getDiskSpaceInUse() : "NA", SWT.NONE);
-
- toolkit.createLabel(section, "Disk Usage: ", SWT.NONE);
- ProgressBar diskUsageBar = new ProgressBar(section, SWT.SMOOTH);
- diskUsageBar.setMinimum(0);
- diskUsageBar.setMaximum((int) Math.round(server.getTotalDiskSpace()));
- diskUsageBar.setSelection((int) Math.round(server.getDiskSpaceInUse()));
- diskUsageBar.setToolTipText("Total: " + NumberUtil.formatNumber(server.getTotalDiskSpace())
- + "GB, In Use: " + NumberUtil.formatNumber(server.getDiskSpaceInUse()) + "GB");
- }
-
- toolkit.createLabel(section, "Status: ", SWT.NONE);
- CLabel lblStatusValue = new CLabel(section, SWT.NONE);
- lblStatusValue.setText(server.getStatusStr());
- lblStatusValue.setImage(server.getStatus() == GlusterServer.SERVER_STATUS.ONLINE ? guiHelper
- .getImage(IImageKeys.STATUS_ONLINE) : guiHelper.getImage(IImageKeys.STATUS_OFFLINE));
- toolkit.adapt(lblStatusValue, true, true);
- }
-
- private List<Point> getPnts() {
- final List<Point> pnts = new ArrayList<Point>();
- pnts.add(new Point(47, 98));
- pnts.add(new Point(34, 84));
- pnts.add(new Point(29, 65));
- pnts.add(new Point(33, 48));
- pnts.add(new Point(48, 33));
- pnts.add(new Point(66, 28));
- pnts.add(new Point(83, 32));
- pnts.add(new Point(98, 47));
- pnts.add(new Point(103, 65));
- pnts.add(new Point(98, 83));
- pnts.add(new Point(84, 98));
- return pnts;
- }
-
- private void createServerSummaryTab(GlusterServer server, TabFolder tabFolder, FormToolkit toolkit) {
- String serverName = server.getName();
- Composite serverSummaryTab = guiHelper.createTab(tabFolder, serverName, IImageKeys.SERVER);
- final ScrolledForm form = guiHelper.setupForm(serverSummaryTab, toolkit, "Server Summary [" + serverName + "]");
- createServerSummarySection(server, toolkit, form);
-
- if (server.getStatus() == SERVER_STATUS.ONLINE) {
- Composite section = createNetworkInterfacesSection(server, toolkit, form);
- }
-
- serverSummaryTab.layout(); // IMP: lays out the form properly
- }
-
- private void setupNetworkInterfaceTable(Composite parent, Table table) {
- table.setHeaderVisible(true);
- table.setLinesVisible(false);
-
- TableColumnLayout tableColumnLayout = guiHelper.createTableColumnLayout(table,
- NETWORK_INTERFACE_TABLE_COLUMN_NAMES);
- parent.setLayout(tableColumnLayout);
-
- setColumnProperties(table, NETWORK_INTERFACE_TABLE_COLUMN_INDICES.INTERFACE, SWT.CENTER, 70);
- setColumnProperties(table, NETWORK_INTERFACE_TABLE_COLUMN_INDICES.MODEL, SWT.CENTER, 70);
- setColumnProperties(table, NETWORK_INTERFACE_TABLE_COLUMN_INDICES.SPEED, SWT.CENTER, 70);
- setColumnProperties(table, NETWORK_INTERFACE_TABLE_COLUMN_INDICES.IP_ADDRESS, SWT.CENTER, 100);
- setColumnProperties(table, NETWORK_INTERFACE_TABLE_COLUMN_INDICES.NETMASK, SWT.CENTER, 70);
- setColumnProperties(table, NETWORK_INTERFACE_TABLE_COLUMN_INDICES.GATEWAY, SWT.CENTER, 70);
- // setColumnProperties(table, NETWORK_INTERFACE_TABLE_COLUMN_INDICES.PREFERRED, SWT.CENTER, 70);
- }
-
- /**
- * Sets properties for alignment and weight of given column of given table
- *
- * @param table
- * @param columnIndex
- * @param alignment
- * @param weight
- */
- public void setColumnProperties(Table table, NETWORK_INTERFACE_TABLE_COLUMN_INDICES columnIndex, int alignment,
- int weight) {
- TableColumn column = table.getColumn(columnIndex.ordinal());
- column.setAlignment(alignment);
-
- TableColumnLayout tableColumnLayout = (TableColumnLayout) table.getParent().getLayout();
- tableColumnLayout.setColumnData(column, new ColumnWeightData(weight));
- }
-
- private TableViewer createNetworkInterfacesTableViewer(final Composite parent, GlusterServer server) {
- TableViewer tableViewer = new TableViewer(parent, SWT.FLAT | SWT.FULL_SELECTION | SWT.MULTI);
- // TableViewer tableViewer = new TableViewer(parent, SWT.FLAT | SWT.FULL_SELECTION | SWT.MULTI);
- tableViewer.setLabelProvider(new NetworkInterfaceTableLabelProvider());
- tableViewer.setContentProvider(new ArrayContentProvider());
-
- setupNetworkInterfaceTable(parent, tableViewer.getTable());
- tableViewer.setInput(server.getNetworkInterfaces().toArray());
-
- return tableViewer;
- }
-
- private Composite createTableViewerComposite(Composite parent) {
- Composite tableViewerComposite = new Composite(parent, SWT.NO);
- tableViewerComposite.setLayout(new FillLayout(SWT.HORIZONTAL));
- GridData tableLayoutData = new GridData(SWT.FILL, SWT.FILL, true, false);
- tableLayoutData.widthHint = 400;
- tableLayoutData.minimumWidth = 400;
- // tableLayoutData.grabExcessHorizontalSpace = true;
- tableViewerComposite.setLayoutData(tableLayoutData);
- return tableViewerComposite;
- }
-
- private Composite createNetworkInterfacesSection(GlusterServer server, FormToolkit toolkit, ScrolledForm form) {
- final Composite section = guiHelper.createSection(form, toolkit, "Network Interfaces", null, 1, false);
- createNetworkInterfacesTableViewer(createTableViewerComposite(section), server);
- // Hyperlink changePreferredNetworkLink = toolkit.createHyperlink(section, "Change Preferred Network",
- // SWT.NONE);
- // changePreferredNetworkLink.addHyperlinkListener(new HyperlinkAdapter() {
- //
- // @Override
- // public void linkActivated(HyperlinkEvent e) {
- // new MessageDialog(
- // section.getShell(),
- // "Gluster Storage Platform",
- // guiHelper.getImage(IImageKeys.SERVER),
- // "This will show additional controls to help user choose a new network interface. TO BE IMPLEMENTED.",
- // MessageDialog.INFORMATION, new String[] { "OK" }, 0).open();
- // }
- // });
- return section;
- }
-
- private void createServerLogsTab(GlusterServer server, TabFolder tabFolder, FormToolkit toolkit) {
- String serverName = server.getName();
- Composite serverLogsTab = guiHelper.createTab(tabFolder, "Logs", IImageKeys.SERVER);
- ServerLogsPage logsPage = new ServerLogsPage(serverLogsTab, SWT.NONE, server);
-
- serverLogsTab.layout(); // IMP: lays out the form properly
- }
-
- private void createServerDisksTab(GlusterServer server, TabFolder tabFolder, FormToolkit toolkit,
- IWorkbenchSite site) {
- Composite serverDisksTab = guiHelper.createTab(tabFolder, "Disks", IImageKeys.SERVER);
- ServerDisksPage page = new ServerDisksPage(serverDisksTab, SWT.NONE, site, server.getDisks());
-
- serverDisksTab.layout(); // IMP: lays out the form properly
- }
-
- @Override
- public void createTabs(Entity entity, TabFolder tabFolder, FormToolkit toolkit, IWorkbenchSite site) {
- GlusterServer server = (GlusterServer) entity;
-
- createServerSummaryTab(server, tabFolder, toolkit);
- if (server.getStatus() == SERVER_STATUS.ONLINE) {
- createServerDisksTab(server, tabFolder, toolkit, site);
- createServerLogsTab(server, tabFolder, toolkit);
- }
- }
-}
diff --git a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/details/tabcreators/ServerTabCreator.java b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/details/tabcreators/ServerTabCreator.java
deleted file mode 100644
index d634253e..00000000
--- a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/details/tabcreators/ServerTabCreator.java
+++ /dev/null
@@ -1,73 +0,0 @@
-/*******************************************************************************
- * 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.details.tabcreators;
-
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.TabFolder;
-import org.eclipse.ui.IWorkbenchSite;
-import org.eclipse.ui.forms.widgets.FormToolkit;
-import org.eclipse.ui.forms.widgets.ScrolledForm;
-
-import com.gluster.storage.management.core.model.Entity;
-import com.gluster.storage.management.core.model.Server;
-import com.gluster.storage.management.core.utils.NumberUtil;
-import com.gluster.storage.management.gui.IImageKeys;
-import com.gluster.storage.management.gui.utils.GUIHelper;
-import com.gluster.storage.management.gui.views.details.TabCreator;
-
-public class ServerTabCreator implements TabCreator {
- private static final GUIHelper guiHelper = GUIHelper.getInstance();
-
- private void createServerSummarySection(Server server, FormToolkit toolkit, final ScrolledForm form) {
- Composite section = guiHelper.createSection(form, toolkit, "Summary", null, 2, false);
-
- toolkit.createLabel(section, "Number of CPUs: ", SWT.NONE);
- toolkit.createLabel(section, "" + server.getNumOfCPUs(), SWT.NONE);
-
-// toolkit.createLabel(section, "CPU Usage (%): ", SWT.NONE);
-// toolkit.createLabel(section, "" + server.getCpuUsage(), SWT.NONE);
-
- toolkit.createLabel(section, "Total Memory (GB): ", SWT.NONE);
- toolkit.createLabel(section, "" + server.getTotalMemory(), SWT.NONE);
-
-// toolkit.createLabel(section, "Memory in Use (GB): ", SWT.NONE);
-// toolkit.createLabel(section, "" + server.getMemoryInUse(), SWT.NONE);
-
- toolkit.createLabel(section, "Total Disk Space (GB): ", SWT.NONE);
- toolkit.createLabel(section, "" + NumberUtil.formatNumber(server.getTotalDiskSpace()), SWT.NONE);
-
-// toolkit.createLabel(section, "Disk Space in Use (GB): ", SWT.NONE);
-// toolkit.createLabel(section, "" + server.getDiskSpaceInUse(), SWT.NONE);
- }
-
- private void createServerSummaryTab(Server server, TabFolder tabFolder, FormToolkit toolkit) {
- String serverName = server.getName();
- Composite serverSummaryTab = guiHelper.createTab(tabFolder, serverName, IImageKeys.SERVER);
- final ScrolledForm form = guiHelper.setupForm(serverSummaryTab, toolkit, "Discovered Server Summary [" + serverName + "]");
- createServerSummarySection(server, toolkit, form);
-
- serverSummaryTab.layout(); // IMP: lays out the form properly
- }
-
- @Override
- public void createTabs(Entity entity, TabFolder tabFolder, FormToolkit toolkit, IWorkbenchSite site) {
- createServerSummaryTab((Server) entity, tabFolder, toolkit);
- }
-}
diff --git a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/details/tabcreators/VolumeTabCreator.java b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/details/tabcreators/VolumeTabCreator.java
deleted file mode 100644
index dc3186e1..00000000
--- a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/details/tabcreators/VolumeTabCreator.java
+++ /dev/null
@@ -1,270 +0,0 @@
-/*******************************************************************************
- * 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.details.tabcreators;
-
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.custom.CLabel;
-import org.eclipse.swt.layout.FillLayout;
-import org.eclipse.swt.layout.GridData;
-import org.eclipse.swt.widgets.Button;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Label;
-import org.eclipse.swt.widgets.TabFolder;
-import org.eclipse.swt.widgets.Text;
-import org.eclipse.ui.IWorkbenchSite;
-import org.eclipse.ui.forms.events.HyperlinkAdapter;
-import org.eclipse.ui.forms.events.HyperlinkEvent;
-import org.eclipse.ui.forms.widgets.FormToolkit;
-import org.eclipse.ui.forms.widgets.Hyperlink;
-import org.eclipse.ui.forms.widgets.ScrolledForm;
-
-import com.gluster.storage.management.client.GlusterDataModelManager;
-import com.gluster.storage.management.core.model.Entity;
-import com.gluster.storage.management.core.model.Volume;
-import com.gluster.storage.management.core.model.Volume.NAS_PROTOCOL;
-import com.gluster.storage.management.core.model.Volume.VOLUME_TYPE;
-import com.gluster.storage.management.core.utils.NumberUtil;
-import com.gluster.storage.management.gui.IImageKeys;
-import com.gluster.storage.management.gui.utils.GUIHelper;
-import com.gluster.storage.management.gui.views.details.BricksPage;
-import com.gluster.storage.management.gui.views.details.DisksPage;
-import com.gluster.storage.management.gui.views.details.TabCreator;
-import com.gluster.storage.management.gui.views.details.VolumeLogsPage;
-import com.gluster.storage.management.gui.views.details.VolumeOptionsPage;
-
-public class VolumeTabCreator implements TabCreator {
- private static final GUIHelper guiHelper = GUIHelper.getInstance();
-
- private void createVolumePropertiesSection(final Volume volume, FormToolkit toolkit, final ScrolledForm form) {
- Composite section = guiHelper.createSection(form, toolkit, "Properties", null, 3, false);
-
- createVolumeTypeField(volume, toolkit, section);
-
- VOLUME_TYPE volumeType = volume.getVolumeType();
- if (volumeType == VOLUME_TYPE.DISTRIBUTED_MIRROR) {
- createReplicaCountField(volume, toolkit, section);
- }
-
- if (volumeType == VOLUME_TYPE.DISTRIBUTED_STRIPE) {
- createStripeCountField(volume, toolkit, section);
- }
-
- createNumOfDisksField(volume, toolkit, section);
- createDiskSpaceField(volume, toolkit, section);
- createTransportTypeField(volume, toolkit, section);
- createNASProtocolField(volume, toolkit, section);
- createAccessControlField(volume, toolkit, section);
- createStatusField(volume, toolkit, section);
- }
-
- private void createDiskSpaceField(final Volume volume, FormToolkit toolkit, Composite section) {
- Label diskSpaceLabel = toolkit.createLabel(section, "Total Disk Space (GB): ", SWT.NONE);
- diskSpaceLabel.setToolTipText("<b>bold</b>normal");
- toolkit.createLabel(section, "" + NumberUtil.formatNumber(volume.getTotalDiskSpace()), SWT.NONE);
- toolkit.createLabel(section, "", SWT.NONE); // dummy
- }
-
- private void createStatusField(final Volume volume, FormToolkit toolkit, Composite section) {
- toolkit.createLabel(section, "Status: ", SWT.NONE);
-
- CLabel lblStatusValue = new CLabel(section, SWT.NONE);
- lblStatusValue.setText(volume.getStatusStr());
- lblStatusValue.setImage(volume.getStatus() == Volume.VOLUME_STATUS.ONLINE ? guiHelper
- .getImage(IImageKeys.STATUS_ONLINE) : guiHelper.getImage(IImageKeys.STATUS_OFFLINE));
-
- toolkit.createLabel(section, "", SWT.NONE); // dummy
- }
-
- private void createTransportTypeField(final Volume volume, FormToolkit toolkit, Composite section) {
- toolkit.createLabel(section, "Transport Type: ", SWT.NONE);
- toolkit.createLabel(section, "" + volume.getTransportTypeStr(), SWT.NONE);
- toolkit.createLabel(section, "", SWT.NONE); // dummy
- }
-
- private void createNumOfDisksField(final Volume volume, FormToolkit toolkit, Composite section) {
- toolkit.createLabel(section, "Number of Disks: ", SWT.NONE);
- toolkit.createLabel(section, "" + volume.getNumOfDisks(), SWT.NONE);
- toolkit.createLabel(section, "", SWT.NONE); // dummy
- }
-
- private void createStripeCountField(final Volume volume, FormToolkit toolkit, Composite section) {
- toolkit.createLabel(section, "Stripe Count: ", SWT.NONE);
- toolkit.createLabel(section, "" + volume.getStripeCount(), SWT.NONE);
- toolkit.createLabel(section, "", SWT.NONE); // dummy
- }
-
- private void createReplicaCountField(final Volume volume, FormToolkit toolkit, Composite section) {
- toolkit.createLabel(section, "Replica Count: ", SWT.NONE);
- toolkit.createLabel(section, "" + volume.getReplicaCount(), SWT.NONE);
- toolkit.createLabel(section, "", SWT.NONE); // dummy
- }
-
- private void createVolumeTypeField(final Volume volume, FormToolkit toolkit, Composite section) {
- toolkit.createLabel(section, "Volume Type: ", SWT.NONE);
- toolkit.createLabel(section, volume.getVolumeTypeStr(), SWT.NONE);
- toolkit.createLabel(section, "", SWT.NONE);
- }
-
- private void createVolumeAlertsSection(final Volume volume, FormToolkit toolkit, final ScrolledForm form) {
- Composite section = guiHelper.createSection(form, toolkit, "Alerts", null, 3, false);
- toolkit.createLabel(section, "Volume related alerts will be displayed here");
- }
-
- private void createVolumeMountingInfoSection(final Volume volume, FormToolkit toolkit, final ScrolledForm form) {
- Composite section = guiHelper.createSection(form, toolkit, "Mounting Information", null, 3, false);
- toolkit.createLabel(section, "Information about mounting the\nvolume will be printed here");
- }
-
- private GridData createDefaultLayoutData() {
- GridData layoutData = new GridData();
- layoutData.minimumWidth = 150;
- layoutData.widthHint = 150;
- return layoutData;
- }
-
- private void createAccessControlField(final Volume volume, FormToolkit toolkit, Composite section) {
- toolkit.createLabel(section, "Access Control: ", SWT.NONE);
- Text accessControlText = toolkit.createText(section, volume.getAccessControlList());
- accessControlText.setLayoutData(createDefaultLayoutData());
- accessControlText.setEnabled(false);
- createChangeLinkForAccessControl(volume, toolkit, section, accessControlText);
- }
-
- private void createChangeLinkForAccessControl(final Volume volume, FormToolkit toolkit, Composite section,
- final Text accessControlText) {
- final Hyperlink changeLink = toolkit.createHyperlink(section, "change", SWT.NONE);
- changeLink.addHyperlinkListener(new HyperlinkAdapter() {
-
- private void finishEdit() {
- // TODO: Update value to back-end
- // TODO: Validation of entered text
- volume.setAccessControlList(accessControlText.getText());
- accessControlText.setEnabled(false);
- changeLink.setText("change");
- }
-
- private void startEdit() {
- accessControlText.setEnabled(true);
- changeLink.setText("update");
- }
-
- @Override
- public void linkActivated(HyperlinkEvent e) {
- if (accessControlText.isEnabled()) {
- // we were already in edit mode.
- finishEdit();
- } else {
- // Get in to edit mode
- startEdit();
- }
- }
- });
- }
-
- private void createNASProtocolField(final Volume volume, FormToolkit toolkit, Composite section) {
- toolkit.createLabel(section, "NAS Protocols: ", SWT.NONE);
-
- Composite nasProtocolsComposite = toolkit.createComposite(section);
- nasProtocolsComposite.setLayout(new FillLayout());
-
- createCheckbox(toolkit, nasProtocolsComposite, "Gluster", true);
- final Button nfsCheckBox = createCheckbox(toolkit, nasProtocolsComposite, "NFS", volume.getNASProtocols().contains(NAS_PROTOCOL.NFS));
-
- createChangeLinkForNASProtocol(volume, toolkit, section, nfsCheckBox);
- }
-
- private void createChangeLinkForNASProtocol(final Volume volume, FormToolkit toolkit, Composite section,
- final Button nfsCheckBox) {
- final Hyperlink changeLink = toolkit.createHyperlink(section, "change", SWT.NONE);
- changeLink.addHyperlinkListener(new HyperlinkAdapter() {
-
- private void finishEdit() {
- // TODO: Update value to back-end
- if (nfsCheckBox.getSelection()) {
- volume.enableNFS();
- } else {
- volume.disableNFS();
- }
- nfsCheckBox.setEnabled(false);
- changeLink.setText("change");
- }
-
- private void startEdit() {
- nfsCheckBox.setEnabled(true);
- changeLink.setText("update");
- }
-
- @Override
- public void linkActivated(HyperlinkEvent e) {
- if (nfsCheckBox.isEnabled()) {
- // we were already in edit mode.
- finishEdit();
- } else {
- // Get in to edit mode
- startEdit();
- }
- }
- });
- }
-
- private Button createCheckbox(FormToolkit toolkit, Composite parent, String label, boolean selected) {
- final Button checkBox = toolkit.createButton(parent, label, SWT.CHECK);
- checkBox.setEnabled(false);
- checkBox.setSelection(selected);
- return checkBox;
- }
-
- private void createVolumePropertiesTab(Volume volume, TabFolder tabFolder, FormToolkit toolkit) {
- Composite volumeTab = guiHelper.createTab(tabFolder, volume.getName() + " - Properties", IImageKeys.VOLUME);
- final ScrolledForm form = guiHelper.setupForm(volumeTab, toolkit, "Volume Properties [" + volume.getName() + "]");
- createVolumePropertiesSection(volume, toolkit, form);
- createVolumeMountingInfoSection(volume, toolkit, form);
- createVolumeAlertsSection(volume, toolkit, form);
-
- volumeTab.layout(); // IMP: lays out the form properly
- }
-
- private void createVolumeLogsTab(Volume volume, TabFolder tabFolder, FormToolkit toolkit) {
- Composite volumeTab = guiHelper.createTab(tabFolder, "Logs", IImageKeys.VOLUME);
- VolumeLogsPage logsPage = new VolumeLogsPage(volumeTab, SWT.NONE, volume);
-
- volumeTab.layout(); // IMP: lays out the form properly
- }
-
- private void createVolumeDisksTab(Volume volume, TabFolder tabFolder, FormToolkit toolkit, IWorkbenchSite site) {
- Composite volumeDisksTab = guiHelper.createTab(tabFolder, "Disks", IImageKeys.VOLUME);
- BricksPage page = new BricksPage(volumeDisksTab, SWT.NONE, site, GlusterDataModelManager.getInstance().getOnlineBricks(volume));
- volumeDisksTab.layout(); // IMP: lays out the form properly
- }
-
- private void createVolumeOptionsTab(Volume volume, TabFolder tabFolder, FormToolkit toolkit) {
- Composite volumeTab = guiHelper.createTab(tabFolder, "Options", IImageKeys.VOLUME);
- //VolumeOptionsPage page = new VolumeOptionsPage(volumeTab, SWT.NONE, volume);
-
- volumeTab.layout(); // IMP: lays out the form properly
- }
-
- @Override
- public void createTabs(Entity entity, TabFolder tabFolder, FormToolkit toolkit, IWorkbenchSite site) {
- createVolumePropertiesTab((Volume) entity, tabFolder, toolkit);
- createVolumeDisksTab((Volume) entity, tabFolder, toolkit, site);
- createVolumeOptionsTab((Volume) entity, tabFolder, toolkit);
- createVolumeLogsTab((Volume) entity, tabFolder, toolkit);
- }
-}