summaryrefslogtreecommitdiffstats
path: root/src/com.gluster.storage.management.console/src/com/gluster/storage/management/console/views
diff options
context:
space:
mode:
authorShireesh Anjal <shireesh@gluster.com>2011-11-25 20:13:35 +0530
committerShireesh Anjal <shireesh@gluster.com>2011-11-25 20:13:35 +0530
commit1142b0e41de39010de7845cf70d71dbb001fc1dc (patch)
tree3513487f65c1a7df47996bd2852393aceaac1b8a /src/com.gluster.storage.management.console/src/com/gluster/storage/management/console/views
parent92c52d8edf285945d31e446503fc742fde9dcc49 (diff)
Renamed projects / packages com.gluster.* to org.gluster.*
Diffstat (limited to 'src/com.gluster.storage.management.console/src/com/gluster/storage/management/console/views')
-rw-r--r--src/com.gluster.storage.management.console/src/com/gluster/storage/management/console/views/ClusterAdapterFactory.java101
-rw-r--r--src/com.gluster.storage.management.console/src/com/gluster/storage/management/console/views/ClusterSummaryView.java469
-rw-r--r--src/com.gluster.storage.management.console/src/com/gluster/storage/management/console/views/DiscoveredServerView.java90
-rw-r--r--src/com.gluster.storage.management.console/src/com/gluster/storage/management/console/views/DiscoveredServersView.java83
-rw-r--r--src/com.gluster.storage.management.console/src/com/gluster/storage/management/console/views/DisksView.java45
-rw-r--r--src/com.gluster.storage.management.console/src/com/gluster/storage/management/console/views/GlusterServerDisksView.java84
-rw-r--r--src/com.gluster.storage.management.console/src/com/gluster/storage/management/console/views/GlusterServerLogsView.java59
-rw-r--r--src/com.gluster.storage.management.console/src/com/gluster/storage/management/console/views/GlusterServerSummaryView.java544
-rw-r--r--src/com.gluster.storage.management.console/src/com/gluster/storage/management/console/views/GlusterServersSummaryView.java290
-rw-r--r--src/com.gluster.storage.management.console/src/com/gluster/storage/management/console/views/GlusterServersView.java78
-rw-r--r--src/com.gluster.storage.management.console/src/com/gluster/storage/management/console/views/GlusterViewsManager.java130
-rw-r--r--src/com.gluster.storage.management.console/src/com/gluster/storage/management/console/views/NavigationTreeLabelDecorator.java87
-rw-r--r--src/com.gluster.storage.management.console/src/com/gluster/storage/management/console/views/NavigationView.java161
-rw-r--r--src/com.gluster.storage.management.console/src/com/gluster/storage/management/console/views/TasksView.java39
-rw-r--r--src/com.gluster.storage.management.console/src/com/gluster/storage/management/console/views/ViewsManager.java38
-rw-r--r--src/com.gluster.storage.management.console/src/com/gluster/storage/management/console/views/VolumeBricksView.java39
-rw-r--r--src/com.gluster.storage.management.console/src/com/gluster/storage/management/console/views/VolumeLogsView.java58
-rw-r--r--src/com.gluster.storage.management.console/src/com/gluster/storage/management/console/views/VolumeOptionsView.java36
-rw-r--r--src/com.gluster.storage.management.console/src/com/gluster/storage/management/console/views/VolumeSummaryView.java859
-rw-r--r--src/com.gluster.storage.management.console/src/com/gluster/storage/management/console/views/VolumeView.java90
-rw-r--r--src/com.gluster.storage.management.console/src/com/gluster/storage/management/console/views/VolumesSummaryView.java301
-rw-r--r--src/com.gluster.storage.management.console/src/com/gluster/storage/management/console/views/VolumesView.java80
-rw-r--r--src/com.gluster.storage.management.console/src/com/gluster/storage/management/console/views/pages/AbstractDisksPage.java335
-rw-r--r--src/com.gluster.storage.management.console/src/com/gluster/storage/management/console/views/pages/AbstractTableTreeViewerPage.java191
-rw-r--r--src/com.gluster.storage.management.console/src/com/gluster/storage/management/console/views/pages/AbstractTableViewerPage.java263
-rw-r--r--src/com.gluster.storage.management.console/src/com/gluster/storage/management/console/views/pages/BricksPage.java123
-rw-r--r--src/com.gluster.storage.management.console/src/com/gluster/storage/management/console/views/pages/DiskTreeContentProvider.java119
-rw-r--r--src/com.gluster.storage.management.console/src/com/gluster/storage/management/console/views/pages/DisksPage.java70
-rw-r--r--src/com.gluster.storage.management.console/src/com/gluster/storage/management/console/views/pages/GlusterServersPage.java138
-rw-r--r--src/com.gluster.storage.management.console/src/com/gluster/storage/management/console/views/pages/OptionKeyEditingSupport.java120
-rw-r--r--src/com.gluster.storage.management.console/src/com/gluster/storage/management/console/views/pages/OptionValueEditingSupport.java110
-rw-r--r--src/com.gluster.storage.management.console/src/com/gluster/storage/management/console/views/pages/ServerDisksPage.java66
-rw-r--r--src/com.gluster.storage.management.console/src/com/gluster/storage/management/console/views/pages/ServerLogsPage.java199
-rw-r--r--src/com.gluster.storage.management.console/src/com/gluster/storage/management/console/views/pages/ServersPage.java138
-rw-r--r--src/com.gluster.storage.management.console/src/com/gluster/storage/management/console/views/pages/TasksPage.java151
-rw-r--r--src/com.gluster.storage.management.console/src/com/gluster/storage/management/console/views/pages/VolumeLogsPage.java431
-rw-r--r--src/com.gluster.storage.management.console/src/com/gluster/storage/management/console/views/pages/VolumeOptionsPage.java360
-rw-r--r--src/com.gluster.storage.management.console/src/com/gluster/storage/management/console/views/pages/VolumesPage.java135
38 files changed, 0 insertions, 6710 deletions
diff --git a/src/com.gluster.storage.management.console/src/com/gluster/storage/management/console/views/ClusterAdapterFactory.java b/src/com.gluster.storage.management.console/src/com/gluster/storage/management/console/views/ClusterAdapterFactory.java
deleted file mode 100644
index d904c8f3..00000000
--- a/src/com.gluster.storage.management.console/src/com/gluster/storage/management/console/views/ClusterAdapterFactory.java
+++ /dev/null
@@ -1,101 +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.console.views;
-
-import org.eclipse.core.runtime.IAdapterFactory;
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.ui.model.IWorkbenchAdapter;
-import org.eclipse.ui.plugin.AbstractUIPlugin;
-
-import com.gluster.storage.management.console.Application;
-import com.gluster.storage.management.console.IImageKeys;
-import com.gluster.storage.management.core.model.Cluster;
-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.Server;
-import com.gluster.storage.management.core.model.Volume;
-
-public class ClusterAdapterFactory implements IAdapterFactory {
- private IWorkbenchAdapter entityAdapter = new IWorkbenchAdapter() {
-
- @Override
- public Object getParent(Object o) {
- return ((Entity) o).getParent();
- }
-
- @Override
- public String getLabel(Object o) {
- return ((Entity)o).getName();
- }
-
- @SuppressWarnings({ "unchecked", "rawtypes" })
- @Override
- public ImageDescriptor getImageDescriptor(Object object) {
- String iconPath = null;
-
- if(object instanceof GlusterDataModel || object instanceof Cluster) {
- iconPath = IImageKeys.CLUSTER_16x16;
- }
-
- if(object instanceof EntityGroup) {
- Class<? extends Entity> entityType = ((EntityGroup) object).getEntityType();
- if(entityType == Volume.class) {
- iconPath = IImageKeys.VOLUMES_16x16;
- } else {
- iconPath = IImageKeys.SERVERS_16x16;
- }
- }
-
- if(object instanceof Volume) {
- iconPath = IImageKeys.VOLUME_16x16;
- }
-
- if(object instanceof Server || object instanceof GlusterServer) {
- iconPath = IImageKeys.SERVER_16x16;
- }
-
- return AbstractUIPlugin.imageDescriptorFromPlugin(
- Application.PLUGIN_ID, iconPath);
- }
-
- @Override
- public Object[] getChildren(Object o) {
- return ((Entity)o).getChildren().toArray();
- }
- };
-
- @SuppressWarnings("rawtypes")
- @Override
- public Object getAdapter(Object adaptableObject, Class adapterType) {
- if (adapterType == IWorkbenchAdapter.class) {
- if (adaptableObject instanceof Entity) {
- return entityAdapter;
- }
- }
- return null;
- }
-
- @SuppressWarnings("rawtypes")
- @Override
- public Class[] getAdapterList() {
- return new Class[] { IWorkbenchAdapter.class };
- }
-}
diff --git a/src/com.gluster.storage.management.console/src/com/gluster/storage/management/console/views/ClusterSummaryView.java b/src/com.gluster.storage.management.console/src/com/gluster/storage/management/console/views/ClusterSummaryView.java
deleted file mode 100644
index 6be9f8d9..00000000
--- a/src/com.gluster.storage.management.console/src/com/gluster/storage/management/console/views/ClusterSummaryView.java
+++ /dev/null
@@ -1,469 +0,0 @@
-/**
- * DiscoveredServerView.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.console.views;
-
-import java.util.List;
-
-import org.eclipse.jface.fieldassist.ControlDecoration;
-import org.eclipse.jface.preference.IPreferenceStore;
-import org.eclipse.jface.util.IPropertyChangeListener;
-import org.eclipse.jface.util.PropertyChangeEvent;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.custom.CLabel;
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.swt.layout.GridData;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.swt.widgets.Label;
-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.ImageHyperlink;
-import org.eclipse.ui.forms.widgets.ScrolledForm;
-import org.eclipse.ui.handlers.IHandlerService;
-import org.eclipse.ui.part.ViewPart;
-
-import com.gluster.storage.management.console.Activator;
-import com.gluster.storage.management.console.GlusterDataModelManager;
-import com.gluster.storage.management.console.IImageKeys;
-import com.gluster.storage.management.console.actions.ActionConstants;
-import com.gluster.storage.management.console.preferences.PreferenceConstants;
-import com.gluster.storage.management.console.utils.ChartUtil;
-import com.gluster.storage.management.console.utils.ChartUtil.ChartPeriodLinkListener;
-import com.gluster.storage.management.console.utils.ChartViewerComposite;
-import com.gluster.storage.management.console.utils.GUIHelper;
-import com.gluster.storage.management.core.constants.CoreConstants;
-import com.gluster.storage.management.core.constants.GlusterConstants;
-import com.gluster.storage.management.core.model.Alert;
-import com.gluster.storage.management.core.model.Cluster;
-import com.gluster.storage.management.core.model.ClusterListener;
-import com.gluster.storage.management.core.model.DefaultClusterListener;
-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.Server;
-import com.gluster.storage.management.core.model.Server.SERVER_STATUS;
-import com.gluster.storage.management.core.model.ServerStats;
-import com.gluster.storage.management.core.model.Status;
-import com.gluster.storage.management.core.model.TaskInfo;
-
-/**
- *
- */
-public class ClusterSummaryView extends ViewPart {
- public static final String ID = ClusterSummaryView.class.getName();
- private static final GUIHelper guiHelper = GUIHelper.getInstance();
- private final FormToolkit toolkit = new FormToolkit(Display.getCurrent());
- private ScrolledForm form;
- private Cluster cluster;
- private Composite cpuChartSection;
- private Composite networkChartSection;
- private GlusterDataModel model = GlusterDataModelManager.getInstance().getModel();
- private ClusterListener clusterListener;
- private static final IPreferenceStore preferenceStore = Activator.getDefault().getPreferenceStore();
- private Composite alertsSection;
- private Composite tasksSection;
- private static final ChartUtil chartUtil = ChartUtil.getInstance();
- private IPropertyChangeListener propertyChangeListener;
- private Label onlineServerCountLabel;
- private Label offlineServerCountLabel;
-
- /*
- * (non-Javadoc)
- *
- * @see org.eclipse.ui.part.WorkbenchPart#createPartControl(org.eclipse.swt.widgets.Composite)
- */
- @Override
- public void createPartControl(Composite parent) {
- if (cluster == null) {
- cluster = model.getCluster();
- }
- setPartName("Summary");
- createSections(parent);
-
- createListeners();
- }
-
- private void createListeners() {
- createClusterListener();
- GlusterDataModelManager.getInstance().addClusterListener(clusterListener);
-
- createPropertyChangeListener();
- preferenceStore.addPropertyChangeListener(propertyChangeListener );
- }
-
- private void createPropertyChangeListener() {
- propertyChangeListener = new IPropertyChangeListener() {
- @Override
- public void propertyChange(PropertyChangeEvent event) {
- String preferenceName = event.getProperty();
- GlusterDataModelManager modelManager = GlusterDataModelManager.getInstance();
- if(preferenceName.equals(PreferenceConstants.P_CPU_AGGREGATED_CHART_PERIOD)) {
- modelManager.initializeAggregatedCpuStats(cluster);
- String cpuStatsPeriod = (String)event.getNewValue();
- refreshChartSection(cpuChartSection, cluster.getAggregatedCpuStats(), cpuStatsPeriod, "%", 100, 4,
- chartUtil.new CpuChartPeriodLinkListener(null, cpuStatsPeriod, toolkit), 2);
- } else if(preferenceName.equals(PreferenceConstants.P_NETWORK_AGGREGATED_CHART_PERIOD)) {
- modelManager.initializeAggregatedNetworkStats(cluster);
- String networkStatsPeriod = (String)event.getNewValue();
- refreshChartSection(networkChartSection, cluster.getAggregatedNetworkStats(), networkStatsPeriod, "KiB/s", -1,
- 4, chartUtil.new NetworkChartPeriodLinkListener(null, networkStatsPeriod, toolkit), 2);
- }
- }
- };
- }
-
- private void createClusterListener() {
- clusterListener = new DefaultClusterListener() {
- @Override
- public void aggregatedStatsChanged() {
- super.aggregatedStatsChanged();
- refreshCharts();
- populateOnlineOfflineServerCount();
- }
-
- @Override
- public void alertsGenerated() {
- super.alertsGenerated();
- guiHelper.clearSection(alertsSection);
- populateAlerts();
- }
-
- @Override
- public void taskAdded(TaskInfo taskInfo) {
- super.taskAdded(taskInfo);
- updateTaskSection();
- }
-
- @Override
- public void taskRemoved(TaskInfo taskInfo) {
- super.taskRemoved(taskInfo);
- updateTaskSection();
- }
-
- @Override
- public void taskUpdated(TaskInfo taskInfo) {
- super.taskUpdated(taskInfo);
- updateTaskSection();
- }
-
- private void updateTaskSection() {
- guiHelper.clearSection(tasksSection);
- populateTasksSection();
- }
- };
- }
-
- @Override
- public void dispose() {
- super.dispose();
- GlusterDataModelManager.getInstance().removeClusterListener(clusterListener);
- preferenceStore.removePropertyChangeListener(propertyChangeListener);
- }
-
- private void refreshCharts() {
- String cpuStatsPeriod = preferenceStore.getString(PreferenceConstants.P_CPU_AGGREGATED_CHART_PERIOD);
- String networkStatsPeriod = preferenceStore.getString(PreferenceConstants.P_NETWORK_AGGREGATED_CHART_PERIOD);
- refreshChartSection(cpuChartSection, cluster.getAggregatedCpuStats(), cpuStatsPeriod, "%", 100, 4,
- chartUtil.new CpuChartPeriodLinkListener(null, cpuStatsPeriod, toolkit), 2);
- refreshChartSection(networkChartSection, cluster.getAggregatedNetworkStats(), networkStatsPeriod, "KiB/s", -1,
- 4, chartUtil.new NetworkChartPeriodLinkListener(null, networkStatsPeriod, toolkit), 2);
- }
-
- 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 createServersSection() {
- Composite section = guiHelper.createSection(form, toolkit, "Servers", null, 2, false);
- toolkit.createLabel(section, "Online : ");
- onlineServerCountLabel = toolkit.createLabel(section, "");
-
- toolkit.createLabel(section, "Offline : ");
- offlineServerCountLabel = toolkit.createLabel(section, "");
- populateOnlineOfflineServerCount();
- }
-
- private void populateOnlineOfflineServerCount() {
- int onlineServerCount = getServerCountByStatus(cluster, SERVER_STATUS.ONLINE);
- int offlineServerCount = getServerCountByStatus(cluster, SERVER_STATUS.OFFLINE);
- onlineServerCountLabel.setText("" + onlineServerCount);
- onlineServerCountLabel.setForeground(Display.getCurrent().getSystemColor(SWT.COLOR_DARK_GREEN));
- offlineServerCountLabel.setText("" + offlineServerCount);
- offlineServerCountLabel.setForeground(Display.getCurrent().getSystemColor(SWT.COLOR_RED));
- }
-
-
- private void createDiskSpaceSection() {
- Composite section = guiHelper.createSection(form, toolkit, "Disk Space", null, 3, false);
- if (cluster.getServers().size() == 0) {
- toolkit.createLabel(section, "This section will be populated after at least" + CoreConstants.NEWLINE
- + "one server is added to the storage cloud.");
- return;
- }
-
- double totalDiskSpace = cluster.getTotalDiskSpace();
- double diskSpaceInUse = cluster.getDiskSpaceInUse();
- Double[] values = new Double[] { diskSpaceInUse / 1024, (totalDiskSpace - diskSpaceInUse) / 1024 };
- createDiskSpaceChart(section, values);
- }
-
- private void createDiskSpaceChart(Composite section, Double[] values) {
- String[] categories = new String[] { "Used Space (GB)", "Free Space (GB)" };
- ChartViewerComposite chartViewerComposite = new ChartViewerComposite(section, SWT.NONE, categories, values);
-
- GridData data = new GridData(SWT.FILL, SWT.FILL, false, false);
- data.widthHint = 400;
- data.heightHint = 180;
- data.verticalAlignment = SWT.CENTER;
- chartViewerComposite.setLayoutData(data);
- }
-
- private void createAlertsSection() {
- alertsSection = guiHelper.createSection(form, toolkit, "Alerts", null, 1, false);
- populateAlerts();
- }
-
- private void populateAlerts() {
- List<Alert> alerts = cluster.getAlerts();
- for (Alert alert : alerts) {
- addAlertLabel(alertsSection, alert);
- }
- alertsSection.layout();
- form.reflow(true);
- }
-
- private void addAlertLabel(Composite section, Alert alert) {
- CLabel lblAlert = new CLabel(section, SWT.FLAT);
- GridData layoutData = new GridData();
- layoutData.widthHint = 400;
- layoutData.horizontalIndent = 20;
- lblAlert.setLayoutData(layoutData);
-
- Image alertImage = null;
- switch (alert.getType()) {
- case OFFLINE_VOLUME_BRICKS_ALERT:
- alertImage = guiHelper.getImage(IImageKeys.BRICK_OFFLINE_22x22);
- break;
- case DISK_USAGE_ALERT:
- alertImage = guiHelper.getImage(IImageKeys.LOW_DISK_SPACE_22x22);
- break;
- case OFFLINE_SERVERS_ALERT:
- alertImage = guiHelper.getImage(IImageKeys.SERVER_OFFLINE_22x22);
- break;
- case MEMORY_USAGE_ALERT:
- alertImage = guiHelper.getImage(IImageKeys.MEMORY_USAGE_ALERT_22x22);
- break;
- case CPU_USAGE_ALERT:
- alertImage = guiHelper.getImage(IImageKeys.SERVER_WARNING_22x22);
- break;
- case OFFLINE_VOLUME_ALERT:
- alertImage = guiHelper.getImage(IImageKeys.VOLUME_OFFLINE_22x22);
- break;
- }
- lblAlert.setText(alert.getMessage());
- ControlDecoration dec = new ControlDecoration(lblAlert, SWT.LEFT);
- dec.setImage(alertImage);
- lblAlert.redraw();
- }
-
- private void createActionsSection() {
- 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_48x48));
- imageHyperlink.addHyperlinkListener(new HyperlinkAdapter() {
- @Override
- public void linkActivated(HyperlinkEvent e) {
- IHandlerService hs = (IHandlerService) getSite().getService(IHandlerService.class);
- try {
- hs.executeCommand(ActionConstants.COMMAND_CREATE_VOLUME, null);
- } catch (Exception e1) {
- e1.printStackTrace();
- }
- }
- });
-
- imageHyperlink = toolkit.createImageHyperlink(section, SWT.NONE);
- imageHyperlink.setText("Add Server(s)");
- imageHyperlink.setImage(guiHelper.getImage(IImageKeys.ADD_SERVER_48x48));
- imageHyperlink.addHyperlinkListener(new HyperlinkAdapter() {
- @Override
- public void linkActivated(HyperlinkEvent e) {
- // Open the "discovered servers" view by selecting the corresponding entity in the navigation view
- EntityGroup<Server> autoDiscoveredServersEntityGroup = GlusterDataModelManager.getInstance().getModel()
- .getCluster().getEntityGroup(Server.class);
-
- NavigationView navigationView = (NavigationView) guiHelper.getView(NavigationView.ID);
- navigationView.selectEntity(autoDiscoveredServersEntityGroup);
- }
- });
- }
-
- private void createSections(Composite parent) {
- form = guiHelper.setupForm(parent, toolkit, "Cluster Summary");
-
- if (cluster.getServers().size() > 0
- && (cluster.getAggregatedCpuStats().getRows() == null || cluster.getAggregatedNetworkStats().getRows() == null)) {
- // cluster has servers, but stats are null. Happens when user logs in to a new cluster, '
- // and then adds the first server.
- GlusterDataModelManager.getInstance().initializeAggregatedCpuStats(cluster);
- GlusterDataModelManager.getInstance().initializeAggregatedNetworkStats(cluster);
- }
-
- createServersSection();
- createDiskSpaceSection();
- createCPUUsageSection();
- createNetworkUsageSection();
- createActionsSection();
- createAlertsSection();
- createTasksSection();
-
- parent.layout(); // IMP: lays out the form properly
- }
-
- private Composite createAreaChartSection(ServerStats stats, String sectionTitle, int dataColumnIndex, String unit, String timestampFormat, ChartPeriodLinkListener listener, double maxValue, int chartLinkColumnCount) {
- Composite section = guiHelper.createSection(form, toolkit, sectionTitle, null, 1, false);
- if (cluster.getServers().size() == 0) {
- toolkit.createLabel(section, "This section will be populated after at least" + CoreConstants.NEWLINE
- + "one server is added to the storage cloud.");
- return section;
- }
-
- ChartUtil.getInstance().createAreaChart(toolkit, section, stats, dataColumnIndex, unit, timestampFormat, listener, maxValue, chartLinkColumnCount);
- return section;
- }
-
- private void createCPUUsageSection() {
- IPreferenceStore preferenceStore = Activator.getDefault().getPreferenceStore();
- String cpuStatsPeriod = preferenceStore.getString(PreferenceConstants.P_CPU_AGGREGATED_CHART_PERIOD);
-
- // in case of CPU usage, there are three elements in usage data: user, system and total. we use total.
- cpuChartSection = createAreaChartSection(cluster.getAggregatedCpuStats(), "CPU Usage (Aggregated)", 2, "%",
- getTimestampFormatForPeriod(cpuStatsPeriod), chartUtil.new CpuChartPeriodLinkListener(null,
- cpuStatsPeriod, toolkit), 100, 4);
- }
-
- private String getTimestampFormatForPeriod(String statsPeriod) {
- if(statsPeriod.equals(GlusterConstants.STATS_PERIOD_1DAY)) {
- return "HH:mm";
- } else if (statsPeriod.equals(GlusterConstants.STATS_PERIOD_1WEEK)) {
- return "dd-MMM HH:mm";
- } else {
- return "dd-MMM";
- }
- }
-
- private void createNetworkUsageSection() {
- IPreferenceStore preferenceStore = Activator.getDefault().getPreferenceStore();
- String networkStatsPeriod = preferenceStore.getString(PreferenceConstants.P_NETWORK_AGGREGATED_CHART_PERIOD);
-
- // in case of network usage, there are three elements in usage data: received, transmitted and total. we use total.
- networkChartSection = createAreaChartSection(cluster.getAggregatedNetworkStats(), "Network Usage (Aggregated)",
- 2, "KiB/s", getTimestampFormatForPeriod(networkStatsPeriod),
- chartUtil.new NetworkChartPeriodLinkListener(null, networkStatsPeriod, toolkit), -1, 4);
- }
-
- private void createTasksSection() {
- tasksSection = guiHelper.createSection(form, toolkit, CoreConstants.RUNNING_TASKS, null, 1, false);
- populateTasksSection();
- }
-
- private void populateTasksSection() {
- for (TaskInfo taskInfo : cluster.getTaskInfoList()) {
- if (taskInfo.getStatus().getCode() != Status.STATUS_CODE_SUCCESS) {
- addTaskLabel(tasksSection, taskInfo);
- }
- }
- tasksSection.layout();
- form.reflow(true);
- }
-
- private void addTaskLabel(Composite section, TaskInfo taskInfo) {
- //TODO: create link and open the task progress view
- CLabel lblAlert = new CLabel(section, SWT.NONE);
-
- Image taskImage = null;
- switch(taskInfo.getType()) {
- case DISK_FORMAT:
- taskImage = guiHelper.getImage(IImageKeys.DISK_INITIALIZING_22x22);
- break;
- case BRICK_MIGRATE:
- taskImage = guiHelper.getImage(IImageKeys.BRICK_MIGRATE_22x22);
- break;
- case VOLUME_REBALANCE:
- taskImage = guiHelper.getImage(IImageKeys.VOLUME_REBALANCE_22x22);
- break;
- }
-
- String description = taskInfo.getDescription();
- switch (taskInfo.getStatus().getCode()) {
- case Status.STATUS_CODE_PAUSE:
- description += " (paused)";
- break;
- case Status.STATUS_CODE_COMMIT_PENDING:
- description += " (commit pending)";
- break;
- case Status.STATUS_CODE_FAILURE:
- description += " (failed)";
- break;
- }
- lblAlert.setText(description);
- lblAlert.setImage(taskImage);
- lblAlert.redraw();
- }
-
- /*
- * (non-Javadoc)
- *
- * @see org.eclipse.ui.part.WorkbenchPart#setFocus()
- */
- @Override
- public void setFocus() {
- if (form != null) {
- form.setFocus();
- }
- }
-
- private void refreshChartSection(Composite section, ServerStats stats, String statsPeriod, String unit,
- double maxValue, int columnCount, ChartPeriodLinkListener linkListener, int dataColumnIndex) {
- if(stats == null) {
- return;
- }
-
- for (Control control : section.getChildren()) {
- if (!control.isDisposed()) {
- control.dispose();
- }
- }
- chartUtil.createAreaChart(toolkit, section, stats, dataColumnIndex, unit,
- getTimestampFormatForPeriod(statsPeriod), linkListener, maxValue, columnCount);
- section.layout();
- }
-}
diff --git a/src/com.gluster.storage.management.console/src/com/gluster/storage/management/console/views/DiscoveredServerView.java b/src/com.gluster.storage.management.console/src/com/gluster/storage/management/console/views/DiscoveredServerView.java
deleted file mode 100644
index abc9ec2f..00000000
--- a/src/com.gluster.storage.management.console/src/com/gluster/storage/management/console/views/DiscoveredServerView.java
+++ /dev/null
@@ -1,90 +0,0 @@
-/**
- * DiscoveredServerView.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.console.views;
-
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.ui.forms.widgets.FormToolkit;
-import org.eclipse.ui.forms.widgets.ScrolledForm;
-import org.eclipse.ui.part.ViewPart;
-
-import com.gluster.storage.management.console.utils.GUIHelper;
-import com.gluster.storage.management.core.model.Server;
-import com.gluster.storage.management.core.utils.NumberUtil;
-
-/**
- * @author root
- *
- */
-public class DiscoveredServerView extends ViewPart {
- public static final String ID = DiscoveredServerView.class.getName();
- private static final GUIHelper guiHelper = GUIHelper.getInstance();
- private final FormToolkit toolkit = new FormToolkit(Display.getCurrent());
- private ScrolledForm form;
- private Server server;
-
- /*
- * (non-Javadoc)
- *
- * @see org.eclipse.ui.part.WorkbenchPart#createPartControl(org.eclipse.swt.widgets.Composite)
- */
- @Override
- public void createPartControl(Composite parent) {
- if (server == null) {
- server = guiHelper.getSelectedEntity(getSite(), Server.class);
- }
- createSections(parent);
- }
-
- private void createServerSummarySection() {
- 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, "Total Memory (GB): ", SWT.NONE);
- toolkit.createLabel(section, "" + NumberUtil.formatNumber((server.getTotalMemory() / 1024)), SWT.NONE);
-
- toolkit.createLabel(section, "Total Disk Space (GB): ", SWT.NONE);
- toolkit.createLabel(section, "" + NumberUtil.formatNumber((server.getTotalDiskSpace() / 1024)), SWT.NONE);
- }
-
- private void createSections(Composite parent) {
- String serverName = server.getName();
- form = guiHelper.setupForm(parent, toolkit, "Discovered Server Summary [" + serverName + "]");
- createServerSummarySection();
-
- parent.layout(); // IMP: lays out the form properly
- }
-
- /*
- * (non-Javadoc)
- *
- * @see org.eclipse.ui.part.WorkbenchPart#setFocus()
- */
- @Override
- public void setFocus() {
- if (form != null) {
- form.setFocus();
- }
- }
-}
diff --git a/src/com.gluster.storage.management.console/src/com/gluster/storage/management/console/views/DiscoveredServersView.java b/src/com.gluster.storage.management.console/src/com/gluster/storage/management/console/views/DiscoveredServersView.java
deleted file mode 100644
index ab3cd556..00000000
--- a/src/com.gluster.storage.management.console/src/com/gluster/storage/management/console/views/DiscoveredServersView.java
+++ /dev/null
@@ -1,83 +0,0 @@
-/**
- * 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.console.views;
-
-import org.eclipse.jface.viewers.DoubleClickEvent;
-import org.eclipse.jface.viewers.IDoubleClickListener;
-import org.eclipse.jface.viewers.StructuredSelection;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.ui.part.ViewPart;
-
-import com.gluster.storage.management.console.utils.GUIHelper;
-import com.gluster.storage.management.console.views.pages.ServersPage;
-import com.gluster.storage.management.core.model.Entity;
-import com.gluster.storage.management.core.model.EntityGroup;
-import com.gluster.storage.management.core.model.Server;
-
-/**
- *
- */
-public class DiscoveredServersView extends ViewPart implements IDoubleClickListener {
- public static final String ID = DiscoveredServersView.class.getName();
- private static final GUIHelper guiHelper = GUIHelper.getInstance();
- private EntityGroup<Server> servers;
- private ServersPage page;
-
- public DiscoveredServersView() {
- }
-
- /*
- * (non-Javadoc)
- *
- * @see org.eclipse.ui.part.WorkbenchPart#createPartControl(org.eclipse.swt.widgets.Composite)
- */
- @SuppressWarnings({ "unchecked", "rawtypes" })
- @Override
- public void createPartControl(Composite parent) {
- if (servers == null) {
- Object selectedObj = guiHelper.getSelectedEntity(getSite(), EntityGroup.class);
- if (selectedObj != null && ((EntityGroup) selectedObj).getEntityType() == Server.class) {
- servers = (EntityGroup<Server>)selectedObj;
- }
- }
-
- page = new ServersPage(parent, getSite(), servers);
- page.addDoubleClickListener(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());
- }
- }
-}
diff --git a/src/com.gluster.storage.management.console/src/com/gluster/storage/management/console/views/DisksView.java b/src/com.gluster.storage.management.console/src/com/gluster/storage/management/console/views/DisksView.java
deleted file mode 100644
index 7ba1a88a..00000000
--- a/src/com.gluster.storage.management.console/src/com/gluster/storage/management/console/views/DisksView.java
+++ /dev/null
@@ -1,45 +0,0 @@
-package com.gluster.storage.management.console.views;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.ui.part.ViewPart;
-
-import com.gluster.storage.management.console.utils.GUIHelper;
-import com.gluster.storage.management.console.views.pages.DisksPage;
-import com.gluster.storage.management.core.model.Disk;
-import com.gluster.storage.management.core.model.EntityGroup;
-import com.gluster.storage.management.core.model.GlusterServer;
-
-public class DisksView extends ViewPart {
- public static final String ID = DisksView.class.getName();
- private static final GUIHelper guiHelper = GUIHelper.getInstance();
- private EntityGroup<GlusterServer> servers;
- private DisksPage page;
-
- @SuppressWarnings("unchecked")
- @Override
- public void createPartControl(Composite parent) {
- if (servers == null) {
- servers = guiHelper.getSelectedEntity(getSite(), EntityGroup.class);
- }
-
- page = new DisksPage(parent, SWT.NONE, getSite(), getAllDisks(servers));
- //page.layout(); // IMP: lays out the form properly
- }
-
- private List<Disk> getAllDisks(EntityGroup<GlusterServer> servers) {
- List<Disk> disks = new ArrayList<Disk>();
- for(GlusterServer server : servers.getEntities()) {
- disks.addAll(server.getDisks());
- }
- return disks;
- }
-
- @Override
- public void setFocus() {
- page.setFocus();
- }
-} \ No newline at end of file
diff --git a/src/com.gluster.storage.management.console/src/com/gluster/storage/management/console/views/GlusterServerDisksView.java b/src/com.gluster.storage.management.console/src/com/gluster/storage/management/console/views/GlusterServerDisksView.java
deleted file mode 100644
index d3cd98e8..00000000
--- a/src/com.gluster.storage.management.console/src/com/gluster/storage/management/console/views/GlusterServerDisksView.java
+++ /dev/null
@@ -1,84 +0,0 @@
-/**
- * GlusterServerDisksView.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.console.views;
-
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.ui.part.ViewPart;
-
-import com.gluster.storage.management.console.GlusterDataModelManager;
-import com.gluster.storage.management.console.utils.GUIHelper;
-import com.gluster.storage.management.console.views.pages.ServerDisksPage;
-import com.gluster.storage.management.core.model.ClusterListener;
-import com.gluster.storage.management.core.model.DefaultClusterListener;
-import com.gluster.storage.management.core.model.Event;
-import com.gluster.storage.management.core.model.Event.EVENT_TYPE;
-import com.gluster.storage.management.core.model.GlusterServer;
-
-public class GlusterServerDisksView extends ViewPart {
- public static final String ID = GlusterServerDisksView.class.getName();
- private static final GUIHelper guiHelper = GUIHelper.getInstance();
- private ClusterListener clusterListener;
- private GlusterServer server;
- private ServerDisksPage page;
-
- /* (non-Javadoc)
- * @see org.eclipse.ui.part.WorkbenchPart#createPartControl(org.eclipse.swt.widgets.Composite)
- */
- @Override
- public void createPartControl(Composite parent) {
- if (server == null) {
- server = guiHelper.getSelectedEntity(getSite(), GlusterServer.class);
- }
- page = new ServerDisksPage(parent, SWT.NONE, getSite(), server.getDisks());
-
- final ViewPart thisView = this;
- clusterListener = new DefaultClusterListener() {
- @Override
- public void serverChanged(GlusterServer server, Event event) {
- super.serverChanged(server, event);
- if(event.getEventType() == EVENT_TYPE.GLUSTER_SERVER_CHANGED) {
- if(!server.isOnline()) {
- getViewSite().getPage().hideView(thisView);
- }
- }
- }
- };
-
- GlusterDataModelManager.getInstance().addClusterListener(clusterListener);
-
- parent.layout(); // IMP: lays out the form properly
- }
-
- @Override
- public void dispose() {
- super.dispose();
- GlusterDataModelManager.getInstance().removeClusterListener(clusterListener);
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.ui.part.WorkbenchPart#setFocus()
- */
- @Override
- public void setFocus() {
- page.setFocus();
- }
-}
diff --git a/src/com.gluster.storage.management.console/src/com/gluster/storage/management/console/views/GlusterServerLogsView.java b/src/com.gluster.storage.management.console/src/com/gluster/storage/management/console/views/GlusterServerLogsView.java
deleted file mode 100644
index 33c85be2..00000000
--- a/src/com.gluster.storage.management.console/src/com/gluster/storage/management/console/views/GlusterServerLogsView.java
+++ /dev/null
@@ -1,59 +0,0 @@
-/**
- * GlusterServerLogsView.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.console.views;
-
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.ui.part.ViewPart;
-
-import com.gluster.storage.management.console.utils.GUIHelper;
-import com.gluster.storage.management.console.views.pages.ServerLogsPage;
-import com.gluster.storage.management.core.model.GlusterServer;
-
-public class GlusterServerLogsView extends ViewPart {
- public static final String ID = GlusterServerLogsView.class.getName();
- private static final GUIHelper guiHelper = GUIHelper.getInstance();
- private GlusterServer server;
- private ServerLogsPage page;
-
- /* (non-Javadoc)
- * @see org.eclipse.ui.part.WorkbenchPart#createPartControl(org.eclipse.swt.widgets.Composite)
- */
- @Override
- public void createPartControl(Composite parent) {
- if (server == null) {
- server = guiHelper.getSelectedEntity(getSite(), GlusterServer.class);
- }
-
- page = new ServerLogsPage(parent, SWT.NONE, server);
-
- parent.layout(); // IMP: lays out the form properly
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.ui.part.WorkbenchPart#setFocus()
- */
- @Override
- public void setFocus() {
- page.setFocus();
- }
-}
-
diff --git a/src/com.gluster.storage.management.console/src/com/gluster/storage/management/console/views/GlusterServerSummaryView.java b/src/com.gluster.storage.management.console/src/com/gluster/storage/management/console/views/GlusterServerSummaryView.java
deleted file mode 100644
index 08344f84..00000000
--- a/src/com.gluster.storage.management.console/src/com/gluster/storage/management/console/views/GlusterServerSummaryView.java
+++ /dev/null
@@ -1,544 +0,0 @@
-/**
- * GlusterServerSummaryView.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.console.views;
-
-import java.lang.reflect.InvocationTargetException;
-import java.util.ArrayList;
-import java.util.List;
-
-import org.eclipse.birt.chart.util.CDateTime;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.jface.dialogs.MessageDialog;
-import org.eclipse.jface.dialogs.ProgressMonitorDialog;
-import org.eclipse.jface.layout.TableColumnLayout;
-import org.eclipse.jface.operation.IRunnableWithProgress;
-import org.eclipse.jface.preference.IPreferenceStore;
-import org.eclipse.jface.util.IPropertyChangeListener;
-import org.eclipse.jface.util.PropertyChangeEvent;
-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.layout.GridLayout;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.swt.widgets.Label;
-import org.eclipse.swt.widgets.ProgressBar;
-import org.eclipse.swt.widgets.Table;
-import org.eclipse.swt.widgets.TableColumn;
-import org.eclipse.ui.forms.widgets.FormToolkit;
-import org.eclipse.ui.forms.widgets.Hyperlink;
-import org.eclipse.ui.forms.widgets.ScrolledForm;
-import org.eclipse.ui.part.ViewPart;
-
-import com.gluster.storage.management.client.GlusterServersClient;
-import com.gluster.storage.management.console.Activator;
-import com.gluster.storage.management.console.ConsoleConstants;
-import com.gluster.storage.management.console.GlusterDataModelManager;
-import com.gluster.storage.management.console.IImageKeys;
-import com.gluster.storage.management.console.NetworkInterfaceTableLabelProvider;
-import com.gluster.storage.management.console.preferences.PreferenceConstants;
-import com.gluster.storage.management.console.toolbar.GlusterToolbarManager;
-import com.gluster.storage.management.console.utils.ChartUtil;
-import com.gluster.storage.management.console.utils.ChartUtil.ChartPeriodLinkListener;
-import com.gluster.storage.management.console.utils.ChartViewerComposite;
-import com.gluster.storage.management.console.utils.GUIHelper;
-import com.gluster.storage.management.console.utils.GlusterLogger;
-import com.gluster.storage.management.core.model.ClusterListener;
-import com.gluster.storage.management.core.model.DefaultClusterListener;
-import com.gluster.storage.management.core.model.Event;
-import com.gluster.storage.management.core.model.Event.EVENT_TYPE;
-import com.gluster.storage.management.core.model.GlusterServer;
-import com.gluster.storage.management.core.model.Server.SERVER_STATUS;
-import com.gluster.storage.management.core.model.ServerStats;
-import com.gluster.storage.management.core.model.ServerStatsRow;
-import com.gluster.storage.management.core.utils.NumberUtil;
-import com.ibm.icu.util.Calendar;
-import com.richclientgui.toolbox.gauges.CoolGauge;
-
-public class GlusterServerSummaryView extends ViewPart {
- public static final String ID = GlusterServerSummaryView.class.getName();
- private static final GUIHelper guiHelper = GUIHelper.getInstance();
- private final FormToolkit toolkit = new FormToolkit(Display.getCurrent());
- private ScrolledForm form;
- private GlusterServer server;
- private ClusterListener clusterListener;
- private static final int CHART_WIDTH = 350;
- private static final int CHART_HEIGHT = 250;
- private static final GlusterLogger logger = GlusterLogger.getInstance();
- private static final IPreferenceStore preferenceStore = Activator.getDefault().getPreferenceStore();
-
- 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 CoolGauge cpuGauge;
- private IPropertyChangeListener propertyChangeListener;
- private Composite cpuUsageSection;
- private Composite networkUsageSection;
- private Composite memoryUsageSection;
- private static final ChartUtil chartUtil = ChartUtil.getInstance();
- private Composite serverSummarySection;
- private Label numCpus;
- private ProgressBar memoryUsageBar;
- private ProgressBar diskUsageBar;
- private CLabel lblServerStatus;
-
- @Override
- public void createPartControl(Composite parent) {
- if (server == null) {
- server = guiHelper.getSelectedEntity(getSite(), GlusterServer.class);
- }
- setPartName("Summary");
- createSections(parent);
-
- createListeners();
- }
-
- private void createListeners() {
- // Refresh the server details whenever the server has changed
- createClusterListener();
- GlusterDataModelManager.getInstance().addClusterListener(clusterListener);
-
- createPropertyChangeListener();
- preferenceStore.addPropertyChangeListener(propertyChangeListener);
- }
-
- private void createPropertyChangeListener() {
- propertyChangeListener = new IPropertyChangeListener() {
-
- @Override
- public void propertyChange(PropertyChangeEvent event) {
- String propertyName = event.getProperty();
- if(propertyName.equals(PreferenceConstants.P_CPU_CHART_PERIOD)) {
- refreshCpuChart();
- } else if(propertyName.equals(PreferenceConstants.P_MEM_CHART_PERIOD)) {
- refreshMemoryChart();
- } else if (propertyName.equals(PreferenceConstants.P_NETWORK_CHART_PERIOD)
- || propertyName.equals(PreferenceConstants.P_DEFAULT_NETWORK_INTERFACE_PFX + server.getName())) {
- refreshNetworkChart();
- }
- }
- };
- }
-
- private void createClusterListener() {
- final GlusterToolbarManager toolbarManager = new GlusterToolbarManager(getSite().getWorkbenchWindow());
- final GlusterServer thisServer = server;
- clusterListener = new DefaultClusterListener() {
-
- @Override
- public void serverChanged(GlusterServer server, Event event) {
- if (event.getEventType() == EVENT_TYPE.GLUSTER_SERVER_CHANGED && server == thisServer) {
- updateServerDetails();
- toolbarManager.updateToolbar(server);
- refreshCharts();
- }
- }
- };
- }
-
- private void refreshCharts() {
- refreshCpuChart();
- refreshMemoryChart();
- refreshNetworkChart();
- }
-
- private void refreshNetworkChart() {
- guiHelper.clearSection(networkUsageSection);
- String statsPeriod = preferenceStore.getString(PreferenceConstants.P_NETWORK_CHART_PERIOD);
- String networkInterface = preferenceStore.getString(PreferenceConstants.P_DEFAULT_NETWORK_INTERFACE_PFX + server.getName());
- if(networkInterface == null || networkInterface.isEmpty()) {
- networkInterface = server.getNetworkInterfaces().get(0).getName();
- }
- ServerStats stats = new GlusterServersClient().getNetworkStats(server.getName(), networkInterface, statsPeriod);
- chartUtil.refreshChartSection(toolkit, networkUsageSection, stats, statsPeriod, "KiB/s", -1, 5, chartUtil.new NetworkChartPeriodLinkListener(server, statsPeriod, toolkit), 2);
- }
-
- private void refreshMemoryChart() {
- guiHelper.clearSection(memoryUsageSection);
- String statsPeriod = preferenceStore.getString(PreferenceConstants.P_MEM_CHART_PERIOD);
- ServerStats stats = new GlusterServersClient().getMemoryStats(server.getName(), statsPeriod);
- chartUtil.refreshChartSection(toolkit, memoryUsageSection, stats, statsPeriod, "%", 100, 4, chartUtil.new MemoryChartPeriodLinkListener(server.getName(), statsPeriod, toolkit), 0);
- }
-
- private void refreshCpuChart() {
- guiHelper.clearSection(cpuUsageSection);
- String statsPeriod = preferenceStore.getString(PreferenceConstants.P_CPU_CHART_PERIOD);
- ServerStats stats = new GlusterServersClient().getCpuStats(server.getName(), statsPeriod);
- chartUtil.refreshChartSection(toolkit, cpuUsageSection, stats, statsPeriod, "%", 100, 4,
- chartUtil.new CpuChartPeriodLinkListener(server.getName(), statsPeriod, toolkit), 2);
- }
-
- private void updateServerDetails() {
- // TODO: Update the server details (cpu usage, memory usage)
- populateServerSummarySection(server);
-
- }
-
- @Override
- public void dispose() {
- super.dispose();
- GlusterDataModelManager.getInstance().removeClusterListener(clusterListener);
- preferenceStore.removePropertyChangeListener(propertyChangeListener);
- }
-
- private void createAreaChart(Composite section, Calendar timestamps[], Double values[], String unit) {
- ChartViewerComposite chartViewerComposite = new ChartViewerComposite(section, SWT.NONE, timestamps, values, unit, "HH:mm", 100);
- GridData data = new GridData(SWT.FILL, SWT.FILL, false, false);
- data.widthHint = CHART_WIDTH;
- data.heightHint = CHART_HEIGHT;
- chartViewerComposite.setLayoutData(data);
- }
-
- private void extractChartData(ServerStats stats, List<Calendar> timestamps, List<Double> data, int dataColumnIndex) {
- for(ServerStatsRow row : stats.getRows()) {
- Double cpuUsage = row.getUsageData().get(dataColumnIndex);
- if(!cpuUsage.isNaN()) {
- timestamps.add(new CDateTime(row.getTimestamp() * 1000));
- data.add(cpuUsage);
- }
- }
- }
-
- private void createAreaChartSection(ServerStats stats, String sectionTitle, int dataColumnIndex, String unit) {
- List<Calendar> timestamps = new ArrayList<Calendar>();
- List<Double> data = new ArrayList<Double>();
- extractChartData(stats, timestamps, data, dataColumnIndex);
-
- if(timestamps.size() == 0) {
- // Log a message saying no CPU stats available
- return;
- }
-
- Composite section = guiHelper.createSection(form, toolkit, sectionTitle, null, 1, false);
- createAreaChart(section, timestamps.toArray(new Calendar[0]), data.toArray(new Double[0]), unit);
-
-// Calendar[] timestamps = new Calendar[] { new CDateTime(1000l*1310468100), new CDateTime(1000l*1310468400), new CDateTime(1000l*1310468700),
-// new CDateTime(1000l*1310469000), new CDateTime(1000l*1310469300), new CDateTime(1000l*1310469600), new CDateTime(1000l*1310469900),
-// new CDateTime(1000l*1310470200), new CDateTime(1000l*1310470500), new CDateTime(1000l*1310470800), new CDateTime(1000l*1310471100),
-// new CDateTime(1000l*1310471400), new CDateTime(1000l*1310471700), new CDateTime(1000l*1310472000), new CDateTime(1000l*1310472300),
-// new CDateTime(1000l*1310472600), new CDateTime(1000l*1310472900), new CDateTime(1000l*1310473200), new CDateTime(1000l*1310473500),
-// new CDateTime(1000l*1310473800) };
-//
-// Double[] values = new Double[] { 10d, 11.23d, 17.92d, 18.69d, 78.62d, 89.11d, 92.43d, 89.31d, 57.39d, 18.46d, 10.44d, 16.28d, 13.51d, 17.53d, 12.21, 20d, 21.43d, 16.45d, 14.86d, 15.27d };
-// createLineChart(section, timestamps, values, "%");
- createChartLinks(section, 4);
- }
-
- private void createMemoryUsageSection() {
- String memStatsPeriod = preferenceStore.getString(PreferenceConstants.P_MEM_CHART_PERIOD);
- memoryUsageSection = guiHelper.createSection(form, toolkit, "Memory Usage", null, 1, false);
-
- ServerStats stats;
- try {
- stats = new GlusterServersClient().getMemoryStats(server.getName(), memStatsPeriod);
- } catch(Exception e) {
- logger.error("Couldn't fetch memory usage statistics for server [" + server.getName() + "]", e);
- toolkit.createLabel(memoryUsageSection, "Couldn't fetch memory usage statistics for server [" + server.getName() + "]! Error: [" + e.getMessage() + "]");
- return;
- }
-
- // in case of memory usage, there are four elements in usage data: user, free, cache, buffer and total. we use "user".
- ChartUtil chartUtil = ChartUtil.getInstance();
- chartUtil.createAreaChart(toolkit, memoryUsageSection, stats, 0, "%", chartUtil
- .getTimestampFormatForPeriod(memStatsPeriod),
- chartUtil.new MemoryChartPeriodLinkListener(server.getName(), memStatsPeriod, toolkit), 100, 4);
- }
-
- private void createCPUUsageSection() {
- String cpuStatsPeriod = preferenceStore.getString(PreferenceConstants.P_CPU_CHART_PERIOD);
- cpuUsageSection = guiHelper.createSection(form, toolkit, "CPU Usage", null, 1, false);
-
- ServerStats stats;
- try {
- stats = new GlusterServersClient().getCpuStats(server.getName(), cpuStatsPeriod);
- } catch(Exception e) {
- logger.error("Couldn't fetch CPU usage statistics for server [" + server.getName() + "]", e);
- toolkit.createLabel(cpuUsageSection, "Couldn't fetch CPU usage statistics for server [" + server.getName() + "]! Error: [" + e.getMessage() + "]");
- return;
- }
-
- // in case of CPU usage, there are three elements in usage data: user, system and total. we use total.
- chartUtil.createAreaChart(toolkit, cpuUsageSection, stats, 2, "%", chartUtil
- .getTimestampFormatForPeriod(cpuStatsPeriod),
- chartUtil.new CpuChartPeriodLinkListener(server.getName(), cpuStatsPeriod, toolkit), 100, 4);
- }
-
- private void createNetworkUsageSection() {
- final String networkStatsPeriod = preferenceStore.getString(PreferenceConstants.P_NETWORK_CHART_PERIOD);
- networkUsageSection = guiHelper.createSection(form, toolkit, "Network Usage", null, 1, false);
-
- String networkInterface = server.getNetworkInterfaces().get(0).getName();
- ServerStats stats;
- try {
- stats = new GlusterServersClient().getNetworkStats(server.getName(), networkInterface, networkStatsPeriod);
- } catch(Exception e) {
- logger.error("Couldn't fetch Network usage statistics for server [" + server.getName() + "] network interface [" + networkInterface + "]", e);
- toolkit.createLabel(networkUsageSection, "Couldn't fetch CPU usage statistics for server [" + server.getName() + "]! Error: [" + e.getMessage() + "]");
- return;
- }
-
- // in case of network usage, there are three elements in usage data: received, transmitted and total. we use total.
- final ChartUtil chartUtil = ChartUtil.getInstance();
- final ChartPeriodLinkListener networkChartPeriodLinkListener = chartUtil.new NetworkChartPeriodLinkListener(server, networkStatsPeriod, toolkit);
- chartUtil.createAreaChart(toolkit, networkUsageSection, stats, 2, "KiB/s", chartUtil
- .getTimestampFormatForPeriod(networkStatsPeriod),
- networkChartPeriodLinkListener , -1, 5);
- }
-
- private Composite createChartLinks(Composite section, int columnCount) {
- GridLayout layout = new org.eclipse.swt.layout.GridLayout(columnCount, false);
- layout.marginBottom = 0;
- layout.marginTop = 0;
- layout.marginLeft = (CHART_WIDTH - (50*columnCount)) / 2;
- Composite graphComposite = toolkit.createComposite(section, SWT.NONE);
- graphComposite.setLayout(layout);
- GridData data = new GridData(SWT.FILL, SWT.FILL, false, false);
- data.widthHint = CHART_WIDTH;
- graphComposite.setLayoutData(data);
-
- Label label1 = toolkit.createLabel(graphComposite, "1 day");
- Hyperlink link1 = toolkit.createHyperlink(graphComposite, "1 week", SWT.NONE);
- Hyperlink link2 = toolkit.createHyperlink(graphComposite, "1 month", SWT.NONE);
- Hyperlink link3 = toolkit.createHyperlink(graphComposite, "1 year", SWT.NONE);
-
- return graphComposite;
- }
-
- private void createSections(Composite parent) {
- String serverName = server.getName();
- form = guiHelper.setupForm(parent, toolkit, "Server Summary [" + serverName + "]");
- createServerSummarySection(server, toolkit, form);
-
- if (server.getStatus() == SERVER_STATUS.ONLINE) {
- try {
- new ProgressMonitorDialog(getSite().getShell()).run(false, false, new IRunnableWithProgress() {
-
- @Override
- public void run(IProgressMonitor monitor) throws InvocationTargetException, InterruptedException {
- monitor.beginTask("Creating Server Summary View", 4);
- monitor.setTaskName("Creating Memory Usage Section");
- createMemoryUsageSection();
- monitor.worked(1);
-
- monitor.setTaskName("Creating Network Usage Section");
- createNetworkUsageSection();
- monitor.worked(1);
-
- monitor.setTaskName("Creating CPU Usage Section");
- createCPUUsageSection();
- monitor.worked(1);
-
- monitor.setTaskName("Creating Network Interfaces Section");
- createNetworkInterfacesSection(server, toolkit, form);
- monitor.worked(1);
- monitor.done();
- }
- });
- } catch (Exception e) {
- String errMsg = "Exception while creating the Gluster Server Summary View : [" + e.getMessage() + "]";
- logger.error(errMsg, e);
- MessageDialog.openError(getSite().getShell(), ConsoleConstants.CONSOLE_TITLE, errMsg);
- }
- }
-
- parent.layout(); // IMP: lays out the form properly
- }
-
- private void createServerSummarySection(GlusterServer server, FormToolkit toolkit, final ScrolledForm form) {
- serverSummarySection = guiHelper.createSection(form, toolkit, "Summary", null, 2, false);
- // toolkit.createLabel(section, "Preferred Network: ", SWT.NONE);
- // toolkit.createLabel(section, server.getPreferredNetworkInterface().getName(), SWT.NONE);
-
- if (server.isOnline()) {
- toolkit.createLabel(serverSummarySection, "Number of CPUs: ", SWT.NONE);
- numCpus = toolkit.createLabel(serverSummarySection, "" + server.getNumOfCPUs(), SWT.NONE);
-
- toolkit.createLabel(serverSummarySection, "% CPU Usage (avg): ", SWT.NONE);
- cpuGauge = new CoolGauge(serverSummarySection, guiHelper.getImage(IImageKeys.GAUGE_SMALL));
-
- toolkit.createLabel(serverSummarySection, "Memory Usage: ", SWT.NONE);
- memoryUsageBar = new ProgressBar(serverSummarySection, SWT.SMOOTH);
-
- // 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(serverSummarySection, "Disk Usage: ", SWT.NONE);
- diskUsageBar = new ProgressBar(serverSummarySection, SWT.SMOOTH);
- }
-
- toolkit.createLabel(serverSummarySection, "Status: ", SWT.NONE);
- lblServerStatus = new CLabel(serverSummarySection, SWT.NONE);
- populateServerSummarySection(server);
- }
-
- private void populateServerSummarySection(GlusterServer server) {
- if (server.isOnline()) {
- numCpus.setText("" + server.getNumOfCPUs());
- numCpus.redraw();
-
- cpuGauge.setLayoutData(new GridData(SWT.BEGINNING, SWT.BEGINNING, false, false));
- cpuGauge.setGaugeNeedleColour(Display.getDefault().getSystemColor(SWT.COLOR_RED));
- cpuGauge.setGaugeNeedleWidth(2);
- cpuGauge.setGaugeNeedlePivot(new Point(66, 65));
-
- cpuGauge.setPoints(getPnts());
- cpuGauge.setLevel(server.getCpuUsage() / 100);
- cpuGauge.setToolTipText(server.getCpuUsage() + "%");
- cpuGauge.redraw();
-
- memoryUsageBar.setMinimum(0);
- memoryUsageBar.setMaximum((int) Math.round(server.getTotalMemory()));
- memoryUsageBar.setSelection((int) Math.round(server.getMemoryInUse()));
- memoryUsageBar.setToolTipText("Total: " + NumberUtil.formatNumber((server.getTotalMemory() / 1024))
- + "GB, In Use: " + NumberUtil.formatNumber((server.getMemoryInUse() / 1024)) + "GB");
-
- diskUsageBar.setMinimum(0);
- diskUsageBar.setMaximum((int) Math.round(server.getTotalDiskSpace()));
- diskUsageBar.setSelection((int) Math.round(server.getDiskSpaceInUse()));
- diskUsageBar.setToolTipText("Total: " + NumberUtil.formatNumber((server.getTotalDiskSpace() / 1024))
- + "GB, In Use: " + NumberUtil.formatNumber((server.getDiskSpaceInUse() / 1024)) + "GB");
-
- }
- lblServerStatus.setText(server.getStatusStr());
- lblServerStatus.setImage(server.getStatus() == GlusterServer.SERVER_STATUS.ONLINE ? guiHelper
- .getImage(IImageKeys.STATUS_ONLINE_16x16) : guiHelper.getImage(IImageKeys.STATUS_OFFLINE_16x16));
- toolkit.adapt(lblServerStatus, true, true);
-
- serverSummarySection.layout();
- form.reflow(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 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 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 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);
- }
-
- 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;
- }
-
- /**
- * 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));
- }
-
- @Override
- public void setFocus() {
- form.setFocus();
- }
-}
diff --git a/src/com.gluster.storage.management.console/src/com/gluster/storage/management/console/views/GlusterServersSummaryView.java b/src/com.gluster.storage.management.console/src/com/gluster/storage/management/console/views/GlusterServersSummaryView.java
deleted file mode 100644
index afca5ad5..00000000
--- a/src/com.gluster.storage.management.console/src/com/gluster/storage/management/console/views/GlusterServersSummaryView.java
+++ /dev/null
@@ -1,290 +0,0 @@
-/**
- * GlusterServersSummaryView.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.console.views;
-
-import java.util.List;
-
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.custom.CLabel;
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.swt.layout.GridData;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.ui.forms.widgets.FormToolkit;
-import org.eclipse.ui.forms.widgets.ScrolledForm;
-import org.eclipse.ui.part.ViewPart;
-
-import com.gluster.storage.management.console.GlusterDataModelManager;
-import com.gluster.storage.management.console.IImageKeys;
-import com.gluster.storage.management.console.utils.ChartViewerComposite;
-import com.gluster.storage.management.console.utils.GUIHelper;
-import com.gluster.storage.management.core.constants.CoreConstants;
-import com.gluster.storage.management.core.model.Alert;
-import com.gluster.storage.management.core.model.Alert.ALERT_TYPES;
-import com.gluster.storage.management.core.model.ClusterListener;
-import com.gluster.storage.management.core.model.DefaultClusterListener;
-import com.gluster.storage.management.core.model.EntityGroup;
-import com.gluster.storage.management.core.model.Event;
-import com.gluster.storage.management.core.model.GlusterServer;
-import com.gluster.storage.management.core.model.Server.SERVER_STATUS;
-import com.gluster.storage.management.core.model.Status;
-import com.gluster.storage.management.core.model.TaskInfo;
-import com.gluster.storage.management.core.model.TaskInfo.TASK_TYPE;
-
-/**
- *
- */
-public class GlusterServersSummaryView extends ViewPart {
- public static final String ID = GlusterServersSummaryView.class.getName();
- private static final GUIHelper guiHelper = GUIHelper.getInstance();
- private final FormToolkit toolkit = new FormToolkit(Display.getCurrent());
- private ScrolledForm form;
- private ClusterListener clusterListener;
- private EntityGroup<GlusterServer> servers;
- private Composite alertsSection;
- private Composite serversAvailabilitySection;
- private Composite tasksSection;
-
- /* (non-Javadoc)
- * @see org.eclipse.ui.part.WorkbenchPart#createPartControl(org.eclipse.swt.widgets.Composite)
- */
- @SuppressWarnings("unchecked")
- @Override
- public void createPartControl(Composite parent) {
- if (servers == null) {
- servers = guiHelper.getSelectedEntity(getSite(), EntityGroup.class);
- }
- setPartName("Summary");
- createSections(parent);
-
- clusterListener = new DefaultClusterListener() {
- @Override
- public void serverAdded(GlusterServer server) {
- super.serverAdded(server);
- updateServerAvailabilitySection();
- }
-
- @Override
- public void serverRemoved(GlusterServer server) {
- super.serverRemoved(server);
- updateServerAvailabilitySection();
- }
-
- @Override
- public void serverChanged(GlusterServer server, Event event) {
- super.serverChanged(server, event);
- updateServerAvailabilitySection();
- }
-
- private void updateServerAvailabilitySection() {
- guiHelper.clearSection(serversAvailabilitySection);
- populateAvailabilitySection();
- }
-
- @Override
- public void alertsGenerated() {
- super.alertsGenerated();
- guiHelper.clearSection(alertsSection);
- populateAlertSection();
- }
-
- @Override
- public void taskAdded(TaskInfo taskInfo) {
- super.taskAdded(taskInfo);
- updateTasksSection();
- }
-
- @Override
- public void taskRemoved(TaskInfo taskInfo) {
- super.taskRemoved(taskInfo);
- updateTasksSection();
- }
-
- @Override
- public void taskUpdated(TaskInfo taskInfo) {
- super.taskUpdated(taskInfo);
- updateTasksSection();
- }
-
- private void updateTasksSection() {
- guiHelper.clearSection(tasksSection);
- populateTasksSection();
- }
- };
- GlusterDataModelManager.getInstance().addClusterListener(clusterListener);
- }
-
- @Override
- public void dispose() {
- super.dispose();
- GlusterDataModelManager.getInstance().removeClusterListener(clusterListener);
- }
-
- /**
- * @param parent
- */
- private void createSections(Composite parent) {
- form = guiHelper.setupForm(parent, toolkit, "Servers - Summary");
-
- createSummarySection();
- createRunningTasksSection();
- createAlertsSection();
-
- parent.layout(); // IMP: lays out the form properly
- }
-
- private void createSummarySection() {
- serversAvailabilitySection = guiHelper.createSection(form, toolkit, "Availability", null, 2, false);
- populateAvailabilitySection();
- }
-
- private void populateAvailabilitySection() {
- if (servers.getEntities().size() == 0) {
- toolkit.createLabel(serversAvailabilitySection, "This section will be populated after at least"
- + CoreConstants.NEWLINE + "one server is added to the storage cloud.");
- return;
- }
-
- Double[] values = new Double[] { Double.valueOf(getServerCountByStatus(servers, SERVER_STATUS.ONLINE)),
- Double.valueOf(getServerCountByStatus(servers, SERVER_STATUS.OFFLINE)) };
- createStatusChart(serversAvailabilitySection, values);
- }
-
- private int getServerCountByStatus(EntityGroup<GlusterServer> servers, SERVER_STATUS status) {
- int count = 0;
- for (GlusterServer server : servers.getEntities()) {
- if (server.getStatus() == status) {
- count++;
- }
- }
- return count;
- }
-
- private void createStatusChart(Composite section, Double[] values) {
- String[] categories = new String[] { "Online", "Offline" };
- ChartViewerComposite chartViewerComposite = new ChartViewerComposite(section, SWT.NONE, categories, values);
-
- GridData data = new GridData(SWT.FILL, SWT.FILL, false, false);
- data.widthHint = 300;
- data.heightHint = 150;
- chartViewerComposite.setLayoutData(data);
- }
-
- private void createAlertsSection() {
- alertsSection = guiHelper.createSection(form, toolkit, "Alerts", null, 1, false);
- populateAlertSection();
- }
-
- private void populateAlertSection() {
- List<Alert> alerts = GlusterDataModelManager.getInstance().getModel().getCluster().getAlerts();
-
- for (Alert alert : alerts) {
- if (alert.getType() == ALERT_TYPES.DISK_USAGE_ALERT || alert.getType() != ALERT_TYPES.OFFLINE_SERVERS_ALERT
- || alert.getType() == ALERT_TYPES.MEMORY_USAGE_ALERT
- || alert.getType() == ALERT_TYPES.CPU_USAGE_ALERT) {
- addAlertLabel(alertsSection, alert);
- }
- }
- alertsSection.pack(true);
- form.reflow(true);
- }
-
- private void addAlertLabel(Composite section, Alert alert) {
- CLabel lblAlert = new CLabel(section, SWT.FLAT);
- Image alertImage = null;
- switch (alert.getType()) {
- case DISK_USAGE_ALERT:
- alertImage = guiHelper.getImage(IImageKeys.LOW_DISK_SPACE_22x22);
- break;
- case OFFLINE_SERVERS_ALERT:
- alertImage = guiHelper.getImage(IImageKeys.SERVER_OFFLINE_22x22);
- break;
- case MEMORY_USAGE_ALERT:
- alertImage = guiHelper.getImage(IImageKeys.MEMORY_USAGE_ALERT_22x22);
- break;
- case CPU_USAGE_ALERT:
- alertImage = guiHelper.getImage(IImageKeys.SERVER_WARNING_22x22);
- break;
- }
- lblAlert.setImage(alertImage);
- lblAlert.setText(alert.getMessage());
- lblAlert.redraw();
- }
-
- private void createRunningTasksSection() {
- tasksSection = guiHelper.createSection(form, toolkit, CoreConstants.RUNNING_TASKS, null, 1, false);
- populateTasksSection();
- }
-
- private void populateTasksSection() {
- for (TaskInfo taskInfo : GlusterDataModelManager.getInstance().getModel().getCluster().getTaskInfoList()) {
- // Exclude volume related tasks
- if (taskInfo.getStatus().getCode() != Status.STATUS_CODE_SUCCESS
- && taskInfo.getType() != TASK_TYPE.VOLUME_REBALANCE
- && taskInfo.getType() != TASK_TYPE.BRICK_MIGRATE) {
- addTaskLabel(tasksSection, taskInfo);
- }
- }
- tasksSection.layout();
- form.reflow(true);
- }
-
- private void addTaskLabel(Composite section, TaskInfo taskInfo) {
- CLabel lblTask = new CLabel(section, SWT.NONE);
- Image taskImage = null;
- switch(taskInfo.getType()) {
- case DISK_FORMAT:
- taskImage = guiHelper.getImage(IImageKeys.DISK_INITIALIZING_22x22);
- break;
- case BRICK_MIGRATE:
- taskImage = guiHelper.getImage(IImageKeys.BRICK_MIGRATE_22x22);
- break;
- case VOLUME_REBALANCE:
- taskImage = guiHelper.getImage(IImageKeys.VOLUME_REBALANCE_22x22);
- break;
- }
-
- String description = taskInfo.getDescription();
- switch (taskInfo.getStatus().getCode()) {
- case Status.STATUS_CODE_PAUSE:
- description += " (paused)";
- break;
- case Status.STATUS_CODE_COMMIT_PENDING:
- description += " (commit pending)";
- break;
- case Status.STATUS_CODE_FAILURE:
- description += " (failed)";
- break;
- }
-
- lblTask.setText(description);
- lblTask.setImage(taskImage);
- lblTask.redraw();
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.ui.part.WorkbenchPart#setFocus()
- */
- @Override
- public void setFocus() {
- form.setFocus();
- }
-} \ No newline at end of file
diff --git a/src/com.gluster.storage.management.console/src/com/gluster/storage/management/console/views/GlusterServersView.java b/src/com.gluster.storage.management.console/src/com/gluster/storage/management/console/views/GlusterServersView.java
deleted file mode 100644
index 66017990..00000000
--- a/src/com.gluster.storage.management.console/src/com/gluster/storage/management/console/views/GlusterServersView.java
+++ /dev/null
@@ -1,78 +0,0 @@
-/**
- * GlusterServersView.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.console.views;
-
-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.ui.part.ViewPart;
-
-import com.gluster.storage.management.console.utils.GUIHelper;
-import com.gluster.storage.management.console.views.pages.GlusterServersPage;
-import com.gluster.storage.management.core.model.Entity;
-import com.gluster.storage.management.core.model.EntityGroup;
-import com.gluster.storage.management.core.model.GlusterServer;
-
-/**
- * @author root
- *
- */
-public class GlusterServersView extends ViewPart implements IDoubleClickListener {
- public static final String ID = GlusterServersView.class.getName();
- private static final GUIHelper guiHelper = GUIHelper.getInstance();
- private EntityGroup<GlusterServer> servers;
- private GlusterServersPage page;
-
- /* (non-Javadoc)
- * @see org.eclipse.ui.part.WorkbenchPart#createPartControl(org.eclipse.swt.widgets.Composite)
- */
- @SuppressWarnings("unchecked")
- @Override
- public void createPartControl(Composite parent) {
- if (servers == null) {
- servers = guiHelper.getSelectedEntity(getSite(), EntityGroup.class);
- }
-
- page = new GlusterServersPage(getSite(), parent, SWT.NONE, servers);
- page.addDoubleClickListener(this);
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.ui.part.WorkbenchPart#setFocus()
- */
- @Override
- public void setFocus() {
- page.setFocus();
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.jface.viewers.IDoubleClickListener#doubleClick(org.eclipse.jface.viewers.DoubleClickEvent)
- */
- @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.console/src/com/gluster/storage/management/console/views/GlusterViewsManager.java b/src/com.gluster.storage.management.console/src/com/gluster/storage/management/console/views/GlusterViewsManager.java
deleted file mode 100644
index 05c30626..00000000
--- a/src/com.gluster.storage.management.console/src/com/gluster/storage/management/console/views/GlusterViewsManager.java
+++ /dev/null
@@ -1,130 +0,0 @@
-/**
- * GlusterViewsManager.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.console.views;
-
-import org.eclipse.ui.IViewReference;
-import org.eclipse.ui.IWorkbenchPage;
-import org.eclipse.ui.PartInitException;
-
-import com.gluster.storage.management.console.ConsoleConstants;
-import com.gluster.storage.management.core.model.Cluster;
-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.Server;
-import com.gluster.storage.management.core.model.Volume;
-
-/**
- * @see ViewsManager
- */
-public class GlusterViewsManager implements ViewsManager {
- private IWorkbenchPage page;
-
- public GlusterViewsManager(IWorkbenchPage page) {
- this.page = page;
- }
-
- /* (non-Javadoc)
- * @see com.gluster.storage.management.console.views.ViewsManager#updateViews(com.gluster.storage.management.core.model.Entity)
- */
- @SuppressWarnings("rawtypes")
- @Override
- public void updateViews(Entity entity) {
- closeAllViews();
-
- try {
- if (entity instanceof EntityGroup) {
- showViewsForEntityGroup((EntityGroup)entity);
- } else if (entity.getClass() == Server.class) {
- showViewsForDiscoveredServer((Server)entity);
- } else if (entity.getClass() == GlusterServer.class) {
- showViewsForGlusterServer((GlusterServer)entity);
- } else if (entity instanceof Volume) {
- showViewsForVolume((Volume)entity);
- } else if (entity instanceof Cluster) {
- showViewsForCluster((Cluster)entity);
- }
- } catch (PartInitException e) {
- e.printStackTrace();
- }
- }
-
- private void closeAllViews() {
- IViewReference[] viewReferences = page.getViewReferences();
- for (final IViewReference viewReference : viewReferences) {
- if (!(viewReference.getId().equals(NavigationView.ID) || viewReference.getId().equals(
- ConsoleConstants.TERMINAL_VIEW_ID))) {
- page.hideView(viewReference);
- }
- }
- }
-
- private void showViewsForCluster(Cluster cluster) throws PartInitException {
- page.showView(ClusterSummaryView.ID);
- page.showView(TasksView.ID, null, IWorkbenchPage.VIEW_CREATE);
- }
-
- private void showViewsForVolume(Volume volume) throws PartInitException {
- page.showView(VolumeSummaryView.ID);
- page.showView(VolumeBricksView.ID, null, IWorkbenchPage.VIEW_CREATE);
- page.showView(VolumeOptionsView.ID, null, IWorkbenchPage.VIEW_CREATE);
- page.showView(VolumeLogsView.ID, null, IWorkbenchPage.VIEW_CREATE);
- }
-
- private void showViewsForGlusterServer(GlusterServer server) throws PartInitException {
- page.showView(GlusterServerSummaryView.ID);
- if (server.getStatus() == GlusterServer.SERVER_STATUS.ONLINE) {
- page.showView(GlusterServerDisksView.ID, null, IWorkbenchPage.VIEW_CREATE);
- //page.showView(GlusterServerLogsView.ID, null, IWorkbenchPage.VIEW_CREATE);
- }
- }
-
- private void showViewsForDiscoveredServer(Server server) throws PartInitException {
- page.showView(DiscoveredServerView.ID);
- }
-
- @SuppressWarnings({ "unchecked", "rawtypes" })
- private void showViewsForEntityGroup(EntityGroup entityGroup) throws PartInitException {
- Class entityType = entityGroup.getEntityType();
- if (entityType == Server.class) {
- showViewForServers(entityGroup);
- } else if (entityType == Volume.class) {
- showViewsForVolumes(entityGroup);
- } else if (entityType == GlusterServer.class) {
- showViewsForGlusterServers(entityGroup);
- }
- }
-
- private void showViewsForGlusterServers(EntityGroup<GlusterServer> server) throws PartInitException {
- page.showView(GlusterServersSummaryView.ID);
- page.showView(GlusterServersView.ID, null, IWorkbenchPage.VIEW_CREATE);
- page.showView(DisksView.ID, null, IWorkbenchPage.VIEW_CREATE);
- }
-
- private void showViewsForVolumes(EntityGroup<Volume> volumes) throws PartInitException {
- page.showView(VolumesSummaryView.ID);
- page.showView(VolumesView.ID, null, IWorkbenchPage.VIEW_CREATE);
- }
-
- private void showViewForServers(EntityGroup<Server> servers) throws PartInitException {
- page.showView(DiscoveredServersView.ID);
- }
-} \ No newline at end of file
diff --git a/src/com.gluster.storage.management.console/src/com/gluster/storage/management/console/views/NavigationTreeLabelDecorator.java b/src/com.gluster.storage.management.console/src/com/gluster/storage/management/console/views/NavigationTreeLabelDecorator.java
deleted file mode 100644
index d7448e76..00000000
--- a/src/com.gluster.storage.management.console/src/com/gluster/storage/management/console/views/NavigationTreeLabelDecorator.java
+++ /dev/null
@@ -1,87 +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.console.views;
-
-import org.eclipse.jface.viewers.IDecoration;
-import org.eclipse.jface.viewers.ILabelProviderListener;
-import org.eclipse.jface.viewers.ILightweightLabelDecorator;
-import org.eclipse.ui.plugin.AbstractUIPlugin;
-
-import com.gluster.storage.management.console.Application;
-import com.gluster.storage.management.console.IImageKeys;
-import com.gluster.storage.management.core.model.EntityGroup;
-import com.gluster.storage.management.core.model.GlusterServer;
-import com.gluster.storage.management.core.model.Server;
-import com.gluster.storage.management.core.model.Volume;
-
-public class NavigationTreeLabelDecorator implements ILightweightLabelDecorator {
-
- @Override
- public void addListener(ILabelProviderListener listener) {
- }
-
- @Override
- public void dispose() {
- }
-
- @Override
- public boolean isLabelProperty(Object element, String property) {
- return false;
- }
-
- @Override
- public void removeListener(ILabelProviderListener listener) {
- }
-
- @SuppressWarnings("rawtypes")
- @Override
- public void decorate(Object element, IDecoration decoration) {
- if (element instanceof Volume) {
- Volume volume = (Volume) element;
- if (volume.getStatus() == Volume.VOLUME_STATUS.OFFLINE) {
- decoration.addOverlay(AbstractUIPlugin.imageDescriptorFromPlugin(Application.PLUGIN_ID,
- IImageKeys.OVERLAY_OFFLINE_8x8));
- } else {
- decoration.addOverlay(AbstractUIPlugin.imageDescriptorFromPlugin(Application.PLUGIN_ID,
- IImageKeys.OVERLAY_ONLINE_8x8));
- }
- }
-
- if (element instanceof GlusterServer) {
- GlusterServer server = (GlusterServer) element;
- if (server.getStatus() == GlusterServer.SERVER_STATUS.OFFLINE) {
- decoration.addOverlay(AbstractUIPlugin.imageDescriptorFromPlugin(Application.PLUGIN_ID,
- IImageKeys.OVERLAY_OFFLINE_8x8));
- } else {
- decoration.addOverlay(AbstractUIPlugin.imageDescriptorFromPlugin(Application.PLUGIN_ID,
- IImageKeys.OVERLAY_ONLINE_8x8));
- }
- }
-
- if (element instanceof Server) {
- decoration.addOverlay(AbstractUIPlugin.imageDescriptorFromPlugin(Application.PLUGIN_ID,
- IImageKeys.OVERLAY_STAR_8x8));
- }
-
- if(element instanceof EntityGroup && ((EntityGroup)element).getEntityType() == Server.class) {
- decoration.addOverlay(AbstractUIPlugin.imageDescriptorFromPlugin(Application.PLUGIN_ID,
- IImageKeys.OVERLAY_STAR_8x8));
- }
- }
-}
diff --git a/src/com.gluster.storage.management.console/src/com/gluster/storage/management/console/views/NavigationView.java b/src/com.gluster.storage.management.console/src/com/gluster/storage/management/console/views/NavigationView.java
deleted file mode 100644
index 21fc4c7a..00000000
--- a/src/com.gluster.storage.management.console/src/com/gluster/storage/management/console/views/NavigationView.java
+++ /dev/null
@@ -1,161 +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.console.views;
-
-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.IWorkbenchPart;
-import org.eclipse.ui.model.BaseWorkbenchContentProvider;
-import org.eclipse.ui.model.WorkbenchLabelProvider;
-import org.eclipse.ui.part.ViewPart;
-
-import com.gluster.storage.management.console.GlusterDataModelManager;
-import com.gluster.storage.management.console.toolbar.GlusterToolbarManager;
-import com.gluster.storage.management.core.model.DefaultClusterListener;
-import com.gluster.storage.management.core.model.Entity;
-import com.gluster.storage.management.core.model.Event;
-import com.gluster.storage.management.core.model.GlusterDataModel;
-import com.gluster.storage.management.core.model.GlusterServer;
-import com.gluster.storage.management.core.model.Volume;
-
-public class NavigationView extends ViewPart implements ISelectionListener {
- public static final String ID = NavigationView.class.getName();
- private TreeViewer treeViewer;
- private IAdapterFactory adapterFactory = new ClusterAdapterFactory();
- private GlusterToolbarManager toolbarManager;
- private Entity entity;
- private GlusterViewsManager viewsManager;
- private DefaultClusterListener clusterListener;
-
- @Override
- public void createPartControl(Composite parent) {
- createNavigationTree(parent);
-
- // Create the views and toolbar managers
- toolbarManager = new GlusterToolbarManager(getSite().getWorkbenchWindow());
- viewsManager = new GlusterViewsManager(getSite().getPage());
-
- // listen to selection events to update views/toolbar accordingly
- getSite().getPage().addSelectionListener(this);
- }
-
- private void createNavigationTree(Composite parent) {
- GlusterDataModel model = GlusterDataModelManager.getInstance().getModel();
-
- Platform.getAdapterManager().registerAdapters(adapterFactory, Entity.class);
- treeViewer = new TreeViewer(parent, SWT.BORDER | SWT.MULTI | SWT.V_SCROLL);
- treeViewer.setLabelProvider(WorkbenchLabelProvider.getDecoratingWorkbenchLabelProvider());
- treeViewer.setContentProvider(new BaseWorkbenchContentProvider());
- treeViewer.setInput(model);
- treeViewer.expandAll();
- // select the first element by default
- treeViewer.setSelection(new StructuredSelection(model.getChildren().get(0)));
-
- setupContextMenu();
-
- // register as selection provider so that other views can listen to any selection events on the tree
- getSite().setSelectionProvider(treeViewer);
-
- clusterListener = new DefaultClusterListener() {
- public void modelChanged() {
- treeViewer.refresh(true);
- }
-
- @Override
- public void volumeChanged(Volume volume, Event event) {
- super.volumeChanged(volume, event);
- treeViewer.update(volume, null);
- if (volume == entity) {
- // this makes sure that the toolbar buttons get updated according to new status
- selectEntity(volume);
- }
- }
-
- @Override
- public void volumeDeleted(Volume volume) {
- super.volumeDeleted(volume);
- if(volume == entity) {
- // volume selected was deleted. select the root element in the tree.
- selectEntity(GlusterDataModelManager.getInstance().getModel().getCluster());
- }
- }
-
- @Override
- public void serverRemoved(GlusterServer server) {
- super.serverRemoved(server);
- if(server == entity) {
- // server selected was removed. select the root element in the tree.
- selectEntity(GlusterDataModelManager.getInstance().getModel().getCluster());
- }
- };
- };
- GlusterDataModelManager.getInstance().addClusterListener(clusterListener);
- }
-
- private void setupContextMenu() {
- MenuManager menuManager = new MenuManager("&Gluster", "gluster.context.menu");
- Menu contextMenu = menuManager.createContextMenu(treeViewer.getControl());
- treeViewer.getTree().setMenu(contextMenu);
- getSite().registerContextMenu(menuManager, treeViewer);
- }
-
- public void selectEntity(Entity entity) {
- treeViewer.setSelection(new StructuredSelection(entity));
- treeViewer.reveal(entity);
- setFocus(); // this ensures that the "selection changed" event gets fired
- }
-
- @Override
- public void setFocus() {
- treeViewer.getControl().setFocus();
- }
-
- @Override
- public void selectionChanged(IWorkbenchPart part, ISelection selection) {
- if (part instanceof NavigationView && selection instanceof TreeSelection) {
- Entity selectedEntity = (Entity) ((TreeSelection) selection).getFirstElement();
-
- if (selectedEntity != null && selectedEntity != entity) {
- entity = selectedEntity;
-
- // update views and toolbar buttons visibility based on selected entity
- viewsManager.updateViews(entity);
- toolbarManager.updateToolbar(entity);
-
- // Opening of other views may cause navigation tree to lose focus; get it back.
- setFocus();
- }
- }
- }
-
- @Override
- public void dispose() {
- super.dispose();
- GlusterDataModelManager.getInstance().removeClusterListener(clusterListener);
- }
-}
diff --git a/src/com.gluster.storage.management.console/src/com/gluster/storage/management/console/views/TasksView.java b/src/com.gluster.storage.management.console/src/com/gluster/storage/management/console/views/TasksView.java
deleted file mode 100644
index e408e64e..00000000
--- a/src/com.gluster.storage.management.console/src/com/gluster/storage/management/console/views/TasksView.java
+++ /dev/null
@@ -1,39 +0,0 @@
-package com.gluster.storage.management.console.views;
-
-import java.util.List;
-
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.ui.part.ViewPart;
-
-import com.gluster.storage.management.console.GlusterDataModelManager;
-import com.gluster.storage.management.console.views.pages.TasksPage;
-import com.gluster.storage.management.core.model.TaskInfo;
-
-public class TasksView extends ViewPart {
-
- public static final String ID = TasksView.class.getName();
- private TasksPage page;
-
-
- public TasksView() {
- // TODO Auto-generated constructor stub
- }
-
- @Override
- public void createPartControl(Composite parent) {
- page = new TasksPage(getSite(), parent, SWT.NONE, getAllTasks());
- page.layout(); // IMP: lays out the form properly
- }
-
-
- private List<TaskInfo> getAllTasks() {
- return GlusterDataModelManager.getInstance().getModel().getCluster().getTaskInfoList();
- }
-
- @Override
- public void setFocus() {
- page.setFocus();
- }
-
-}
diff --git a/src/com.gluster.storage.management.console/src/com/gluster/storage/management/console/views/ViewsManager.java b/src/com.gluster.storage.management.console/src/com/gluster/storage/management/console/views/ViewsManager.java
deleted file mode 100644
index 5b19ea98..00000000
--- a/src/com.gluster.storage.management.console/src/com/gluster/storage/management/console/views/ViewsManager.java
+++ /dev/null
@@ -1,38 +0,0 @@
-/**
- * ViewsManager.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.console.views;
-
-import com.gluster.storage.management.core.model.Entity;
-
-/**
- * Whenever the current selection/action demands opening different set of views, the views manager is used to open
- * appropriate views.
- */
-public interface ViewsManager {
- /**
- * Updates the views for given entity. This typically means that user is working with the given entity, and hence
- * the views related to that entity should be made visible, and other un-related views should be hidden.
- *
- * @param entity
- * The entity for which views are to be updated
- */
- public void updateViews(Entity entity);
-} \ No newline at end of file
diff --git a/src/com.gluster.storage.management.console/src/com/gluster/storage/management/console/views/VolumeBricksView.java b/src/com.gluster.storage.management.console/src/com/gluster/storage/management/console/views/VolumeBricksView.java
deleted file mode 100644
index 33cd1f38..00000000
--- a/src/com.gluster.storage.management.console/src/com/gluster/storage/management/console/views/VolumeBricksView.java
+++ /dev/null
@@ -1,39 +0,0 @@
-package com.gluster.storage.management.console.views;
-
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.ui.part.ViewPart;
-
-import com.gluster.storage.management.console.utils.GUIHelper;
-import com.gluster.storage.management.console.views.pages.BricksPage;
-import com.gluster.storage.management.core.model.Volume;
-
-public class VolumeBricksView extends ViewPart {
- public static final String ID = VolumeBricksView.class.getName();
- private static final GUIHelper guiHelper = GUIHelper.getInstance();
- private BricksPage page;
- private Volume volume;
-
- @Override
- public void createPartControl(Composite parent) {
- if (volume == null) {
- volume = guiHelper.getSelectedEntity(getSite(), Volume.class);
- }
-
- createPage(parent);
- }
-
- /**
- * @param parent
- */
- private void createPage(Composite parent) {
- page = new BricksPage(parent, SWT.NONE, getSite(), volume.getBricks());
- parent.layout(); // IMP: lays out the form properly
- }
-
- @Override
- public void setFocus() {
- page.setFocus();
- }
-}
-
diff --git a/src/com.gluster.storage.management.console/src/com/gluster/storage/management/console/views/VolumeLogsView.java b/src/com.gluster.storage.management.console/src/com/gluster/storage/management/console/views/VolumeLogsView.java
deleted file mode 100644
index 74ef5616..00000000
--- a/src/com.gluster.storage.management.console/src/com/gluster/storage/management/console/views/VolumeLogsView.java
+++ /dev/null
@@ -1,58 +0,0 @@
-package com.gluster.storage.management.console.views;
-
-import org.eclipse.jface.dialogs.MessageDialog;
-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.Shell;
-import org.eclipse.ui.part.ViewPart;
-
-import com.gluster.storage.management.console.utils.GUIHelper;
-import com.gluster.storage.management.console.views.pages.VolumeLogsPage;
-import com.gluster.storage.management.core.constants.CoreConstants;
-import com.gluster.storage.management.core.model.Volume;
-import com.gluster.storage.management.core.model.VolumeLogMessage;
-import com.gluster.storage.management.core.utils.DateUtil;
-
-public class VolumeLogsView extends ViewPart implements IDoubleClickListener {
- VolumeLogsPage logsPage;
- public static final String ID = VolumeLogsView.class.getName();
- private static final GUIHelper guiHelper = GUIHelper.getInstance();
- private Volume volume;
-
- @Override
- public void createPartControl(Composite parent) {
- if (volume == null) {
- volume = guiHelper.getSelectedEntity(getSite(), Volume.class);
- }
-
- createPage(parent);
- }
-
- private void createPage(Composite parent) {
- logsPage = new VolumeLogsPage(parent, SWT.NONE, volume);
- logsPage.addDoubleClickListener(this);
-
- parent.layout(); // IMP: lays out the form properly
- }
-
- @Override
- public void setFocus() {
- logsPage.setFocus();
- }
-
- @Override
- public void doubleClick(DoubleClickEvent event) {
- VolumeLogMessage volumeLogMessage = (VolumeLogMessage) ((StructuredSelection) event.getSelection())
- .getFirstElement();
- String message = DateUtil.formatDate(volumeLogMessage.getTimestamp()) + " "
- + DateUtil.formatTime(volumeLogMessage.getTimestamp()) + " [" + volumeLogMessage.getSeverity() + "]"
- + CoreConstants.NEWLINE + CoreConstants.NEWLINE + volumeLogMessage.getMessage();
-
- new MessageDialog(getSite().getShell(), "Log message from " + volumeLogMessage.getBrick(), null, message,
- MessageDialog.NONE, new String[] { "Close" }, 0).open();
-
- }
-} \ No newline at end of file
diff --git a/src/com.gluster.storage.management.console/src/com/gluster/storage/management/console/views/VolumeOptionsView.java b/src/com.gluster.storage.management.console/src/com/gluster/storage/management/console/views/VolumeOptionsView.java
deleted file mode 100644
index 7129df5d..00000000
--- a/src/com.gluster.storage.management.console/src/com/gluster/storage/management/console/views/VolumeOptionsView.java
+++ /dev/null
@@ -1,36 +0,0 @@
-package com.gluster.storage.management.console.views;
-
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.ui.part.ViewPart;
-
-import com.gluster.storage.management.console.utils.GUIHelper;
-import com.gluster.storage.management.console.views.pages.VolumeOptionsPage;
-import com.gluster.storage.management.core.model.Volume;
-
-public class VolumeOptionsView extends ViewPart {
- public static final String ID = VolumeOptionsView.class.getName();
- private static final GUIHelper guiHelper = GUIHelper.getInstance();
- private VolumeOptionsPage page;
- private Volume volume;
-
- @Override
- public void createPartControl(Composite parent) {
- if (volume == null) {
- volume = guiHelper.getSelectedEntity(getSite(), Volume.class);
- }
-
- createPage(parent);
- }
-
- private void createPage(Composite parent) {
- page = new VolumeOptionsPage(parent, SWT.NONE, volume);
- parent.layout(); // IMP: lays out the form properly
- }
-
- @Override
- public void setFocus() {
- page.setFocus();
- }
-}
-
diff --git a/src/com.gluster.storage.management.console/src/com/gluster/storage/management/console/views/VolumeSummaryView.java b/src/com.gluster.storage.management.console/src/com/gluster/storage/management/console/views/VolumeSummaryView.java
deleted file mode 100644
index 78c7caf2..00000000
--- a/src/com.gluster.storage.management.console/src/com/gluster/storage/management/console/views/VolumeSummaryView.java
+++ /dev/null
@@ -1,859 +0,0 @@
-package com.gluster.storage.management.console.views;
-
-import java.net.MalformedURLException;
-import java.net.URL;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.List;
-
-import org.eclipse.jface.dialogs.MessageDialog;
-import org.eclipse.jface.fieldassist.ControlDecoration;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.custom.BusyIndicator;
-import org.eclipse.swt.custom.CLabel;
-import org.eclipse.swt.events.KeyAdapter;
-import org.eclipse.swt.events.KeyEvent;
-import org.eclipse.swt.events.SelectionAdapter;
-import org.eclipse.swt.events.SelectionEvent;
-import org.eclipse.swt.graphics.Font;
-import org.eclipse.swt.graphics.FontData;
-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.Display;
-import org.eclipse.swt.widgets.Label;
-import org.eclipse.swt.widgets.Text;
-import org.eclipse.ui.PartInitException;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.forms.events.HyperlinkAdapter;
-import org.eclipse.ui.forms.events.HyperlinkEvent;
-import org.eclipse.ui.forms.widgets.FormText;
-import org.eclipse.ui.forms.widgets.FormToolkit;
-import org.eclipse.ui.forms.widgets.Hyperlink;
-import org.eclipse.ui.forms.widgets.ScrolledForm;
-import org.eclipse.ui.part.ViewPart;
-
-import com.gluster.storage.management.client.VolumesClient;
-import com.gluster.storage.management.console.GlusterDataModelManager;
-import com.gluster.storage.management.console.IImageKeys;
-import com.gluster.storage.management.console.toolbar.GlusterToolbarManager;
-import com.gluster.storage.management.console.utils.GUIHelper;
-import com.gluster.storage.management.core.constants.CoreConstants;
-import com.gluster.storage.management.core.constants.GlusterConstants;
-import com.gluster.storage.management.core.model.Alert;
-import com.gluster.storage.management.core.model.Brick;
-import com.gluster.storage.management.core.model.Cluster;
-import com.gluster.storage.management.core.model.DefaultClusterListener;
-import com.gluster.storage.management.core.model.Device;
-import com.gluster.storage.management.core.model.Disk;
-import com.gluster.storage.management.core.model.Event;
-import com.gluster.storage.management.core.model.GlusterServer;
-import com.gluster.storage.management.core.model.Partition;
-import com.gluster.storage.management.core.model.Server.SERVER_STATUS;
-import com.gluster.storage.management.core.model.Volume;
-import com.gluster.storage.management.core.model.Volume.VOLUME_TYPE;
-import com.gluster.storage.management.core.utils.NumberUtil;
-import com.gluster.storage.management.core.utils.StringUtil;
-import com.gluster.storage.management.core.utils.ValidationUtil;
-
-public class VolumeSummaryView extends ViewPart {
- public static final String ID = VolumeSummaryView.class.getName();
- private static final GUIHelper guiHelper = GUIHelper.getInstance();
-
- private final FormToolkit toolkit = new FormToolkit(Display.getCurrent());
- private ScrolledForm form;
- private Volume volume;
- private Label volumeType;
- private CLabel lblStatusValue;
- private DefaultClusterListener volumeChangedListener;
- private Hyperlink changeLink;
- private Hyperlink cifsChangeLink;
- private Text accessControlText;
- private Text cifsUsersText;
- private ControlDecoration errDecoration;
- private ControlDecoration errCifsDecoration;
- private Composite parent;
- private static final String COURIER_FONT = "Courier";
- private GlusterDataModelManager modelManager = GlusterDataModelManager.getInstance();
- private Cluster cluster = modelManager.getModel().getCluster();
- private Button nfsCheckBox;
- private FormText glusterNfsMountText;
- private String nfsMountInfo;
- private Label nfsLabel;
- private String nfs;
-
- private Label numberOfBricks;
- private Label totalDiskSpace;
- private Composite alertsSection;
- private Button cifsCheckbox;
- private Label cifsLabel;
- private Composite cifsUpdateLinkComposite;
-
- @Override
- public void createPartControl(Composite parent) {
- if (volume == null) {
- volume = guiHelper.getSelectedEntity(getSite(), Volume.class);
- }
-
- this.parent = parent;
- setPartName("Summary");
- createSections();
-
- final GlusterToolbarManager toolbarManager = new GlusterToolbarManager(getSite().getWorkbenchWindow());
- // Refresh the navigation tree whenever there is a change to the data model
- volumeChangedListener = new DefaultClusterListener() {
- @Override
- public void volumeChanged(Volume volume, Event event) {
- updateVolumeStatusLabel();
- populateAccessControlText();
- changeNFSStatus(volume.isNfsEnabled());
- updateBrickChanges(volume);
- toolbarManager.updateToolbar(volume);
- cifsCheckbox.setSelection(volume.isCifsEnable());
- populateCifsUsersText();
- renderVolumeTypeField();
- }
-
- @Override
- public void alertsGenerated() {
- super.alertsGenerated();
- guiHelper.clearSection(alertsSection);
- populateAlertSection();
- alertsSection.layout();
- }
- };
- modelManager.addClusterListener(volumeChangedListener);
- }
-
- @Override
- public void dispose() {
- super.dispose();
- modelManager.removeClusterListener(volumeChangedListener);
- }
-
- private void createSections() {
- form = guiHelper.setupForm(parent, toolkit, "Volume Properties [" + volume.getName() + "]");
-
- createVolumePropertiesSection();
- createVolumeMountingInfoSection();
- createVolumeAlertsSection();
-
- parent.layout(); // IMP: lays out the form properly
- }
-
- private void createVolumeAlertsSection() {
- alertsSection = guiHelper.createSection(form, toolkit, "Alerts", null, 1, false);
- populateAlertSection();
- }
-
- private void populateAlertSection() {
- List<Alert> alerts = cluster.getAlerts();
-
- for (int i = 0; i < alerts.size(); i++) {
- if (alerts.get(i).getType() == Alert.ALERT_TYPES.OFFLINE_VOLUME_BRICKS_ALERT
- && alerts.get(i).getReference().split(":")[0].trim().equals(volume.getName())) {
- addAlertLabel(alertsSection, alerts.get(i));
- }
- }
- }
-
- private void addAlertLabel(Composite section, Alert alert) {
- CLabel lblAlert = new CLabel(section, SWT.NONE);
- lblAlert.setImage(guiHelper.getImage(IImageKeys.BRICK_OFFLINE_22x22));
- lblAlert.setText(alert.getMessage());
- lblAlert.redraw();
- }
-
- private FormText setFormTextStyle(FormText formText, String fontName, int size, int style) {
- Font font = new Font(Display.getCurrent(), new FontData(fontName, size, style));
- formText.setFont(font);
- return formText;
- }
-
- private void createVolumeMountingInfoSection() {
- String glusterFs = "Gluster:";
- nfs = "NFS:";
- String onlineServers = getOnlineServers(10); // Limited to 10 servers
- String firstOnlineServer = onlineServers.split(",")[0].trim();
- String glusterFsMountInfo = "mount -t glusterfs " + firstOnlineServer + ":/" + volume.getName()
- + " <mount-point>";
- nfsMountInfo = "mount -t nfs " + firstOnlineServer + ":/" + volume.getName() + " <mount-point>";
- // TODO: if more than 10 servers...
- String info = "Server can be any server name in the storage cloud eg. <" + onlineServers + ">";
-
- Composite section = guiHelper.createSection(form, toolkit, "Mounting Information", null, 3, false);
-
- toolkit.createLabel(section, glusterFs, SWT.NORMAL);
- FormText glusterfsMountText = setFormTextStyle(toolkit.createFormText(section, true), COURIER_FONT, 10,
- SWT.NONE);
- glusterfsMountText.setText(glusterFsMountInfo, false, false);
- glusterfsMountText.setLayoutData(new GridData(GridData.BEGINNING, GridData.VERTICAL_ALIGN_CENTER, false, false,
- 2, 0)); // Label spanned two column
-
- nfsLabel = toolkit.createLabel(section, nfs, SWT.NONE);
- GridData data = new GridData();
- data.horizontalAlignment = SWT.FILL;
- nfsLabel.setLayoutData(data);
-
- glusterNfsMountText = setFormTextStyle(toolkit.createFormText(section, true), COURIER_FONT, 10, SWT.NONE);
- glusterNfsMountText.setText(nfsMountInfo, false, false);
- glusterNfsMountText.setLayoutData(new GridData(GridData.BEGINNING, GridData.VERTICAL_ALIGN_CENTER, false,
- false, 2, 0));
-
- changeNFSStatus(nfsCheckBox.getSelection());
-
- toolkit.createLabel(section, "");
- Label infoLabel = toolkit.createLabel(section, info, SWT.NONE);
- infoLabel.setLayoutData(new GridData(GridData.BEGINNING, GridData.VERTICAL_ALIGN_CENTER, false, false, 2, 0));
-
- // TODO: implement a logic to identify the corresponding glusterfs client download link
- String message = "You can download GlusterFS client from";
- String glusterFSDownloadlinkText = "here.";
- final String glusterFSDownloadlink = "http://download.gluster.com/pub/gluster/glusterfs/";
-
- toolkit.createLabel(section, "");
- toolkit.createLabel(section, message);
- Hyperlink link = toolkit.createHyperlink(section, glusterFSDownloadlinkText, SWT.NORMAL);
- link.addHyperlinkListener(new HyperlinkAdapter() {
- public void linkActivated(HyperlinkEvent e) {
- try {
- System.out.println(e.getLabel() + " [" + e.getHref() + "]");
- PlatformUI.getWorkbench().getBrowserSupport().getExternalBrowser()
- .openURL(new URL(glusterFSDownloadlink));
- } catch (PartInitException e1) {
- e1.printStackTrace();
- } catch (MalformedURLException e1) {
- e1.printStackTrace();
- }
- }
- });
- }
-
- private String getOnlineServers(int maxServers) {
- List<String> OnlineServers = new ArrayList<String>();
- for (GlusterServer server : cluster.getServers()) {
- if (server.getStatus() == SERVER_STATUS.ONLINE) {
- OnlineServers.add(server.getName());
- if (OnlineServers.size() >= maxServers) {
- break;
- }
- }
- }
- return StringUtil.collectionToString(OnlineServers, ", ") + ((OnlineServers.size() > maxServers) ? "..." : "");
- }
-
- /**
- *
- */
- private void createVolumePropertiesSection() {
- Composite section = guiHelper.createSection(form, toolkit, "Properties", null, 3, false);
-
- createVolumeTypeField(section);
-
- VOLUME_TYPE volumeType = volume.getVolumeType();
- if (volumeType == VOLUME_TYPE.DISTRIBUTED_REPLICATE) {
- createReplicaCountField(section);
- }
-
- if (volumeType == VOLUME_TYPE.DISTRIBUTED_STRIPE) {
- createStripeCountField(section);
- }
-
- createNumOfBricksField(section);
- createDiskSpaceField(section);
- // createTransportTypeField(section);
- createNASProtocolField(section);
- createCifsField(section);
- createAccessControlField(section);
- createStatusField(section);
- }
-
- private GridData createDefaultLayoutData() {
- GridData layoutData = new GridData();
- layoutData.minimumWidth = 300;
- layoutData.widthHint = 300;
- return layoutData;
- }
-
- private void createCifsField(Composite section) {
- cifsLabel = toolkit.createLabel(section, "CIFS: ", SWT.NONE);
- cifsUsersText = toolkit.createText(section, volume.getAccessControlList(), SWT.BORDER);
- populateCifsUsersText();
- addKeyListenerForCifsUser();
-
- cifsUpdateLinkComposite = toolkit.createComposite(section, SWT.NONE);
- cifsUpdateLinkComposite.setLayout(new FillLayout());
- cifsUpdateLinkComposite.setVisible(volume.isCifsEnable());
-
- createChangeLinkForCifs(cifsUpdateLinkComposite);
- renderCifsUsers(cifsCheckbox.getSelection());
- errCifsDecoration = guiHelper.createErrorDecoration(cifsUsersText);
- errCifsDecoration.hide();
- }
-
- private void createAccessControlField(Composite section) {
- toolkit.createLabel(section, "Allow Access From: ", SWT.NONE);
- accessControlText = toolkit.createText(section, volume.getAccessControlList(), SWT.BORDER);
-
- populateAccessControlText();
- addKeyListenerForAccessControl();
- accessControlText.setLayoutData(createDefaultLayoutData());
- accessControlText.setEnabled(false);
- createChangeLinkForAccessControl(section);
-
- // error decoration used while validating the access control text
- errDecoration = guiHelper.createErrorDecoration(accessControlText);
- errDecoration.hide();
- createAccessControlInfoLabel(section); // info text
- }
-
- private void createAccessControlInfoLabel(Composite section) {
- toolkit.createLabel(section, "", SWT.NONE);
- Label accessControlInfoLabel = toolkit.createLabel(section, "(Comma separated list of IP addresses/hostnames)");
- GridData data = new GridData(SWT.LEFT, SWT.CENTER, true, false);
- data.horizontalSpan = 2;
- accessControlInfoLabel.setLayoutData(data);
- }
-
- private void createChangeLinkForAccessControl(Composite section) {
- changeLink = toolkit.createHyperlink(section, "change", SWT.NONE);
- changeLink.addHyperlinkListener(new HyperlinkAdapter() {
-
- private void finishEdit() {
- saveAccessControlList();
- }
-
- private void startEdit() {
- accessControlText.setEnabled(true);
- accessControlText.setFocus();
- accessControlText.selectAll();
- 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 saveAccessControlList() {
- final String newACL = accessControlText.getText();
-
- guiHelper.setStatusMessage("Setting access control list to [" + newACL + "]...");
- parent.update();
-
- if (newACL.equals(volume.getAccessControlList())) {
- accessControlText.setEnabled(false);
- changeLink.setText("change");
- } else if (ValidationUtil.isValidAccessControl(newACL)) {
- BusyIndicator.showWhile(Display.getDefault(), new Runnable() {
- @Override
- public void run() {
- try {
- new VolumesClient().setVolumeOption(volume.getName(), Volume.OPTION_AUTH_ALLOW, newACL);
- accessControlText.setEnabled(false);
- changeLink.setText("change");
-
- modelManager.setAccessControlList(volume, newACL);
- } catch (Exception e) {
- MessageDialog.openError(Display.getDefault().getActiveShell(), "Access control", e.getMessage());
- }
- }
- });
- } else {
- MessageDialog.openError(Display.getDefault().getActiveShell(), "Access control", "Invalid IP / Host name ");
- }
- guiHelper.clearStatusMessage();
- parent.update();
- }
-
- private void createChangeLinkForCifs(Composite section) {
- cifsChangeLink = toolkit.createHyperlink(section, "change", SWT.NONE);
- cifsChangeLink.addHyperlinkListener(new HyperlinkAdapter() {
-
- private void finishEdit() {
- saveCifsConfiguration();
- }
-
- private void startEdit() {
- if (cifsCheckbox.getSelection()) {
- enableCifsUsersControls(true);
- cifsUsersText.selectAll();
- }
- }
-
- @Override
- public void linkActivated(HyperlinkEvent e) {
- if (cifsUsersText.isEnabled()) {
- // we were already in edit mode.
- finishEdit();
- } else {
- // Get in to edit mode
- startEdit();
- }
- }
- });
- }
-
- private void saveCifsConfiguration() {
- guiHelper.setStatusMessage("Setting Cifs Configuration...");
- parent.update();
-
- // To check if no changes in the users list
- if (!isvalidCifsUser()) {
- MessageDialog.openError(Display.getDefault().getActiveShell(), "Cifs Configuration",
- "Please enter cifs users name");
- enableCifsUsersControls(true);
- validateCifsUsers();
- // } else if (cifsUsers.equals(configuredUsers)) { // Nothing to do.
- // enableCifsUsersControls(false);
- } else {
- BusyIndicator.showWhile(Display.getDefault(), new Runnable() {
- @Override
- public void run() {
- VolumesClient vc = new VolumesClient();
- Volume newVolume = new Volume();
- Integer userAction = 1;
- String cifsUsers = cifsUsersText.getText().trim();
- List<String> servers = GlusterDataModelManager.getInstance().getOfflineServers();
- // One or more servers are offline, Show warning if cifs is enabled
- if (servers != null && servers.size() > 0) {
- userAction = new MessageDialog(parent.getShell(), "CIFS configuration", GUIHelper
- .getInstance().getImage(IImageKeys.VOLUME_16x16),
- "Performing CIFS updates when one or more servers are offline can trigger "
- + "inconsistent behavior for CIFS accesses in the cluster."
- + CoreConstants.NEWLINE + CoreConstants.NEWLINE
- + "Are you sure you want to continue?", MessageDialog.QUESTION, new String[] {
- "No", "Yes" }, -1).open();
- }
-
- // If no cifs users and removing cifs config, nothing to do
- if (!(!cifsCheckbox.getSelection() && volume.getCifsUsers().toString().equals("[]") && (cifsUsers
- .isEmpty() || cifsUsers.equals(""))) && userAction == 1) {
- try {
- vc.setCifsConfig(volume.getName(), cifsCheckbox.getSelection(), cifsUsers);
- enableCifsUsersControls(false);
- newVolume = vc.getVolume(volume.getName());
- modelManager.volumeChanged(volume, newVolume);
- showCifsUsersControls(volume.isCifsEnable());
- } catch (Exception e) {
- MessageDialog.openError(Display.getDefault().getActiveShell(), "Cifs Configuration",
- e.getMessage());
- cifsCheckbox.setSelection(volume.isCifsEnable());
- enableCifsUsersControls(cifsCheckbox.getSelection());
- populateCifsUsersText();
- }
- } else {
- newVolume = vc.getVolume(volume.getName());
- modelManager.volumeChanged(volume, newVolume);
- showCifsUsersControls(volume.isCifsEnable());
- }
- }
- });
- }
- guiHelper.clearStatusMessage();
- parent.update();
- }
-
- private void saveNFSOption() {
- guiHelper.setStatusMessage("Setting NFS option...");
- parent.update();
-
- BusyIndicator.showWhile(Display.getDefault(), new Runnable() {
- @Override
- public void run() {
- try {
- boolean enableNfs = nfsCheckBox.getSelection();
- new VolumesClient().setVolumeOption(volume.getName(), Volume.OPTION_NFS_DISABLE,
- (enableNfs) ? GlusterConstants.OFF : GlusterConstants.ON);
- modelManager.setNfsEnabled(volume, enableNfs);
- } catch (Exception e) {
- MessageDialog.openError(Display.getDefault().getActiveShell(), "NFS Option", e.getMessage());
- }
- }
- });
- guiHelper.clearStatusMessage();
- parent.update();
- }
-
- private void addKeyListenerForAccessControl() {
- accessControlText.addKeyListener(new KeyAdapter() {
- public void keyReleased(KeyEvent key) {
- switch (key.keyCode) {
- case SWT.ESC:
- // Reset to default
- populateAccessControlText();
- changeLink.setText("change");
- accessControlText.setEnabled(false);
- break;
- case 13:
- // User has pressed enter. Save the new value
- saveAccessControlList();
- break;
- }
-
- validateAccessControlList();
- }
- });
- }
-
- private void populateAccessControlText() {
- String accessControlList = volume.getAccessControlList();
- if (accessControlList == null) {
- // if not set, show default value
- accessControlList = modelManager.getVolumeOptionDefaultValue(Volume.OPTION_AUTH_ALLOW);
- }
- accessControlText.setText(accessControlList);
- }
-
- private void addKeyListenerForCifsUser() {
- cifsUsersText.addKeyListener(new KeyAdapter() {
- public void keyReleased(KeyEvent key) {
- switch (key.keyCode) {
- case SWT.ESC:
- // Reset to default
- populateCifsUsersText();
- enableCifsUsersControls(false);
- if (cifsUsersText.getText().trim().length() == 0) { // Disable CIFS as well
- cifsCheckbox.setSelection(false);
- }
- form.reflow(true);
- break;
- case 13:
- // User has pressed enter. Save the new value
- saveCifsConfiguration();
- break;
- }
- validateCifsUsers();
- }
- });
- }
-
- private void populateCifsUsersText() {
- List<String> userList = volume.getCifsUsers();
- if (volume.isCifsEnable() && userList != null) {
- cifsUsersText.setText(StringUtil.collectionToString(userList, ","));
- } else {
- cifsUsersText.setText("");
- }
- }
-
- private void createNASProtocolField(final Composite section) {
- toolkit.createLabel(section, "Access Protocols: ", SWT.NONE);
-
- Composite nasProtocolsComposite = toolkit.createComposite(section);
- nasProtocolsComposite.setLayout(new FillLayout());
-
- createCheckbox(nasProtocolsComposite, "Gluster", true, false);
-
- nfsCheckBox = createCheckbox(nasProtocolsComposite, "NFS", volume.isNfsEnabled(), true);
-
- nfsCheckBox.addSelectionListener(new SelectionAdapter() {
- @Override
- public void widgetSelected(SelectionEvent e) {
- if (!nfsCheckBox.getSelection()) {
- Integer userAction = new MessageDialog(parent.getShell(), "NFS Re-export", GUIHelper.getInstance()
- .getImage(IImageKeys.VOLUME_16x16),
- "Are you sure you want to stop the NFS Re-export for volume [" + volume.getName() + "]?",
- MessageDialog.QUESTION, new String[] { "No", "Yes" }, -1).open();
- if (userAction <= 0) { // user select cancel or pressed escape key
- nfsCheckBox.setSelection(true);
- return;
- }
- }
- saveNFSOption();
- }
- });
-
- // CIFS checkbox
- cifsCheckbox = createCheckbox(nasProtocolsComposite, "CIFS", volume.isCifsEnable(), true);
- createCifsCheckboxListner(cifsCheckbox);
-
- toolkit.createLabel(section, "", SWT.NONE); // dummy
- }
-
- private void createCifsCheckboxListner(final Button cifsCheckbox) {
- cifsCheckbox.addSelectionListener(new SelectionAdapter() {
- @Override
- public void widgetSelected(SelectionEvent e) {
- if (cifsCheckbox.getSelection()) {
- // need to enable cifs
- // TODO: Open the text box (empty and enabled),
- // the hyperlink next to the textbox should have label "update"
- // when user clicks on that hyperlink,
- // saveCifsConfiguration should be called
- // Also, if user presses the "ESC" key,
- // return to the previous state of checkbox and hide the textbox + hyperlink
- showCifsUsersControls(true);
- enableCifsUsersControls(true);
- // saveCifsConfiguration();
- } else {
- // need to disable cifs
- // TODO: hide the textbox and the link AFTER disabling cifs
- if ((volume.getCifsUsers() == null || volume.getCifsUsers().toString().equals("[]"))
- && cifsUsersText.getText().trim().equals("")) {
- showCifsUsersControls(false);
- enableCifsUsersControls(false);
- } else {
-
- Integer userAction = new MessageDialog(parent.getShell(), "CIFS Re-export", GUIHelper
- .getInstance().getImage(IImageKeys.VOLUME_16x16),
- "Are you sure you want to stop the CIFS re-export for volume [" + volume.getName()
- + "]?", MessageDialog.QUESTION, new String[] { "No", "Yes" }, -1).open();
- if (userAction <= 0) { // user select cancel or pressed escape key
- cifsCheckbox.setSelection(true); // back to previous state.
- } else {
- showCifsUsersControls(false);
- enableCifsUsersControls(false);
- saveCifsConfiguration();
- }
- }
- }
- populateCifsUsersText();
- form.reflow(true);
- }
- });
- }
-
- private void renderCifsUsers(Boolean cifsSelection) {
- if (cifsSelection) {
- enableCifsUsersControls(false);
- showCifsUsersControls(true);
- } else {
- showCifsUsersControls(false);
- }
- }
-
- private void showCifsUsersControls(Boolean visible) {
- if (visible) {
- GridData data = new GridData();
- data.heightHint = 20;
- data.widthHint = 100;
- cifsLabel.setLayoutData(data);
-
- GridData data1 = new GridData();
- data1.heightHint = 20;
- data1.widthHint = 300;
-
- cifsUsersText.setLayoutData(data1);
-
- GridData data2 = new GridData();
- data2.heightHint = 25;
- data2.widthHint = 75;
- cifsUpdateLinkComposite.setLayoutData(data2);
- } else {
- GridData data = new GridData();
- data.heightHint = 0;
-
- cifsLabel.setLayoutData(data);
- cifsUsersText.setLayoutData(data);
- cifsUpdateLinkComposite.setLayoutData(data);
- }
-
- cifsLabel.setVisible(visible);
- cifsUsersText.setVisible(visible);
- cifsUpdateLinkComposite.setVisible(visible);
- form.reflow(true);
- }
-
- private void enableCifsUsersControls(Boolean enable) {
- cifsUsersText.setEnabled(enable);
- cifsChangeLink.setText((enable) ? "update" : "change");
- if (enable) {
- cifsUsersText.setFocus();
- validateCifsUsers();
- } else {
- if (errCifsDecoration != null) {
- errCifsDecoration.hide();
- }
- }
- }
-
- private Button createCheckbox(Composite parent, String label, boolean checked, boolean enabled) {
- final Button checkBox = toolkit.createButton(parent, label, SWT.CHECK);
- checkBox.setSelection(checked);
- checkBox.setEnabled(enabled);
- return checkBox;
- }
-
- private void changeNFSStatus(Boolean isNFSExported) {
- glusterNfsMountText.setVisible(isNFSExported);
- nfsLabel.setVisible(isNFSExported);
- nfsCheckBox.setSelection(isNFSExported);
- }
-
- private void updateBrickChanges(Volume volume) {
- numberOfBricks.setText("" + volume.getNumOfBricks());
- totalDiskSpace.setText("" + NumberUtil.formatNumber(getTotalDiskSpace() / 1024));
- }
-
- private double getDiskSize(String serverName, String deviceName) {
- double diskSize = 0;
- GlusterServer server = cluster.getServer(serverName);
- if (server.getStatus() == SERVER_STATUS.ONLINE) {
- for (Disk disk : server.getDisks()) {
- if (disk.getName().equals(deviceName)) {
- diskSize = disk.getSpace();
- break;
- }
-
- if (disk.hasPartitions()) {
- for (Partition partition : disk.getPartitions()) {
- if (partition.getName().equals(deviceName)) {
- diskSize = partition.getSpace();
- break;
- }
- }
- }
- }
- }
- return diskSize;
- }
-
- private double getTotalDiskSpace() {
- List<Double> diskSizes = getVolumeDiskSizes();
- VOLUME_TYPE volumeType = volume.getVolumeType();
- double diskSize = 0d;
- if (volumeType == VOLUME_TYPE.DISTRIBUTE || volumeType == VOLUME_TYPE.STRIPE
- || volumeType == VOLUME_TYPE.DISTRIBUTED_STRIPE) {
- for (Double size : diskSizes) {
- diskSize += size;
- }
- } else { // Replicate or distributed replicate
- int replicaCount = volume.getReplicaCount();
- if (replicaCount == 0) {
- replicaCount = Volume.DEFAULT_REPLICA_COUNT;
- }
- int startIndex = 0;
- for (int i = 0; i < (diskSizes.size() / replicaCount); i++) {
- startIndex = i * replicaCount;
- diskSize += Collections.min(diskSizes.subList(startIndex, startIndex + replicaCount));
- }
- }
- return diskSize;
- }
-
- private List<Double> getVolumeDiskSizes() {
- List<Double> diskSizes = new ArrayList<Double>();
- Device device;
- for (Brick brick : volume.getBricks()) {
- device = modelManager.getDeviceForBrickDir(brick);
- diskSizes.add( (device == null) ? 0d : getDiskSize(brick.getServerName(), device.getName()) );
- }
- return diskSizes;
- }
-
-
-
- private void createDiskSpaceField(Composite section) {
- Label diskSpaceLabel = toolkit.createLabel(section, "Total Disk Space (GB): ", SWT.NONE);
- diskSpaceLabel.setToolTipText("<b>bold</b>normal");
- totalDiskSpace = toolkit.createLabel(section,
- "" + NumberUtil.formatNumber(getTotalDiskSpace() / 1024), SWT.NONE);
- toolkit.createLabel(section, "", SWT.NONE); // dummy
- }
-
- private void createStatusField(Composite section) {
- toolkit.createLabel(section, "Status: ", SWT.NONE);
-
- lblStatusValue = new CLabel(section, SWT.NONE);
- updateVolumeStatusLabel();
-
- toolkit.createLabel(section, "", SWT.NONE); // dummy
- }
-
- private void updateVolumeStatusLabel() {
- lblStatusValue.setText(volume.getStatusStr());
- lblStatusValue.setImage((volume.getStatus() == Volume.VOLUME_STATUS.ONLINE) ? guiHelper
- .getImage(IImageKeys.STATUS_ONLINE_16x16) : guiHelper.getImage(IImageKeys.STATUS_OFFLINE_16x16));
- GridData data = new GridData();
- data.horizontalAlignment = SWT.FILL;
- lblStatusValue.setLayoutData(data);
- lblStatusValue.redraw();
- }
-
- private void createTransportTypeField(Composite section) {
- toolkit.createLabel(section, "Transport Type: ", SWT.NONE);
- toolkit.createLabel(section, "" + volume.getTransportTypeStr(), SWT.NONE);
- toolkit.createLabel(section, "", SWT.NONE); // dummy
- }
-
- private void createNumOfBricksField(Composite section) {
- toolkit.createLabel(section, "Number of Bricks: ", SWT.NONE);
- numberOfBricks = toolkit.createLabel(section, "" + volume.getNumOfBricks(), SWT.NONE);
- toolkit.createLabel(section, "", SWT.NONE); // dummy
- }
-
- private void createStripeCountField(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(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(Composite section) {
- toolkit.createLabel(section, "Volume Type: ", SWT.NONE);
- volumeType = toolkit.createLabel(section, volume.getVolumeTypeStr(), SWT.NONE);
- toolkit.createLabel(section, "", SWT.NONE);
- }
-
- private void renderVolumeTypeField() {
- volumeType.setText(volume.getVolumeTypeStr());
- }
-
- @Override
- public void setFocus() {
- form.setFocus();
- }
-
- private void validateAccessControlList() {
- errDecoration.hide();
-
- if (accessControlText.getText().length() == 0) {
- errDecoration.setDescriptionText("Access control list cannot be empty!");
- errDecoration.show();
- return;
- }
-
- if (!ValidationUtil.isValidAccessControl(accessControlText.getText())) {
- errDecoration.setDescriptionText("Invalid IP address/Host name ["
- + ValidationUtil.getInvalidIpOrHostname(accessControlText.getText())
- + "]. Please enter a valid value!");
- errDecoration.show();
- }
- }
-
- private void validateCifsUsers() {
- errCifsDecoration.hide();
- if (cifsCheckbox.getSelection()) {
- String cifsUserList = cifsUsersText.getText().trim();
- if (cifsUserList.length() == 0) {
- errCifsDecoration.setDescriptionText("Please enter cifs user name");
- errCifsDecoration.show();
- }
- }
- }
-
- private boolean isvalidCifsUser() {
- if (cifsCheckbox.getSelection()) {
- String cifsUserList = cifsUsersText.getText().trim();
- return (cifsUserList.length() != 0);
- }
- validateCifsUsers();
- return true;
- }
-
-}
diff --git a/src/com.gluster.storage.management.console/src/com/gluster/storage/management/console/views/VolumeView.java b/src/com.gluster.storage.management.console/src/com/gluster/storage/management/console/views/VolumeView.java
deleted file mode 100644
index ced9335b..00000000
--- a/src/com.gluster.storage.management.console/src/com/gluster/storage/management/console/views/VolumeView.java
+++ /dev/null
@@ -1,90 +0,0 @@
-/**
- * DiscoveredServerView.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.console.views;
-
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.ui.forms.widgets.FormToolkit;
-import org.eclipse.ui.forms.widgets.ScrolledForm;
-import org.eclipse.ui.part.ViewPart;
-
-import com.gluster.storage.management.console.utils.GUIHelper;
-import com.gluster.storage.management.core.model.Server;
-import com.gluster.storage.management.core.utils.NumberUtil;
-
-/**
- * @author root
- *
- */
-public class VolumeView extends ViewPart {
- public static final String ID = VolumeView.class.getName();
- private static final GUIHelper guiHelper = GUIHelper.getInstance();
- private final FormToolkit toolkit = new FormToolkit(Display.getCurrent());
- private ScrolledForm form;
- private Server server;
-
- /*
- * (non-Javadoc)
- *
- * @see org.eclipse.ui.part.WorkbenchPart#createPartControl(org.eclipse.swt.widgets.Composite)
- */
- @Override
- public void createPartControl(Composite parent) {
- if (server == null) {
- server = guiHelper.getSelectedEntity(getSite(), Server.class);
- }
- createSections(parent, server, toolkit);
- }
-
- 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, "Total Memory (GB): ", SWT.NONE);
- toolkit.createLabel(section, "" + server.getTotalMemory(), SWT.NONE);
-
- toolkit.createLabel(section, "Total Disk Space (GB): ", SWT.NONE);
- toolkit.createLabel(section, "" + NumberUtil.formatNumber(server.getTotalDiskSpace()), SWT.NONE);
- }
-
- private void createSections(Composite parent, Server server, FormToolkit toolkit) {
- String serverName = server.getName();
- form = guiHelper.setupForm(parent, toolkit, "Discovered Server Summary [" + serverName + "]");
- createServerSummarySection(server, toolkit, form);
-
- parent.layout(); // IMP: lays out the form properly
- }
-
- /*
- * (non-Javadoc)
- *
- * @see org.eclipse.ui.part.WorkbenchPart#setFocus()
- */
- @Override
- public void setFocus() {
- if (form != null) {
- form.setFocus();
- }
- }
-}
diff --git a/src/com.gluster.storage.management.console/src/com/gluster/storage/management/console/views/VolumesSummaryView.java b/src/com.gluster.storage.management.console/src/com/gluster/storage/management/console/views/VolumesSummaryView.java
deleted file mode 100644
index cd937215..00000000
--- a/src/com.gluster.storage.management.console/src/com/gluster/storage/management/console/views/VolumesSummaryView.java
+++ /dev/null
@@ -1,301 +0,0 @@
-/**
- * VolumesSummaryView.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.console.views;
-
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.custom.CLabel;
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.swt.layout.GridData;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.ui.forms.widgets.FormToolkit;
-import org.eclipse.ui.forms.widgets.ScrolledForm;
-import org.eclipse.ui.part.ViewPart;
-
-import com.gluster.storage.management.console.GlusterDataModelManager;
-import com.gluster.storage.management.console.IImageKeys;
-import com.gluster.storage.management.console.utils.ChartViewerComposite;
-import com.gluster.storage.management.console.utils.GUIHelper;
-import com.gluster.storage.management.core.constants.CoreConstants;
-import com.gluster.storage.management.core.model.Alert;
-import com.gluster.storage.management.core.model.Cluster;
-import com.gluster.storage.management.core.model.ClusterListener;
-import com.gluster.storage.management.core.model.DefaultClusterListener;
-import com.gluster.storage.management.core.model.EntityGroup;
-import com.gluster.storage.management.core.model.Event;
-import com.gluster.storage.management.core.model.Status;
-import com.gluster.storage.management.core.model.TaskInfo;
-import com.gluster.storage.management.core.model.TaskInfo.TASK_TYPE;
-import com.gluster.storage.management.core.model.Volume;
-import com.gluster.storage.management.core.model.Volume.VOLUME_STATUS;
-
-/**
- *
- */
-public class VolumesSummaryView extends ViewPart {
- public static final String ID = VolumesSummaryView.class.getName();
- private static final GUIHelper guiHelper = GUIHelper.getInstance();
- private final FormToolkit toolkit = new FormToolkit(Display.getCurrent());
- private ScrolledForm form;
- private EntityGroup<Volume> volumes;
- private Cluster cluster = GlusterDataModelManager.getInstance().getModel().getCluster();
- private ClusterListener clusterListener;
-
- private static final String ALERTS = "Alerts";
- private static final String VOLUMES_SUMMARY = "Volumes - Summary";
- private static final String AVAILABILITY = "Availability";
- private Composite alertsSection;
- private Composite tasksSection;
- private Composite summarySection;
-
- /*
- * (non-Javadoc)
- *
- * @see
- * org.eclipse.ui.part.WorkbenchPart#createPartControl(org.eclipse.swt.widgets
- * .Composite)
- */
- @SuppressWarnings({ "unchecked", "rawtypes" })
- @Override
- public void createPartControl(Composite parent) {
- if (volumes == null) {
- Object selectedObj = guiHelper.getSelectedEntity(getSite(), EntityGroup.class);
- if (selectedObj != null && ((EntityGroup) selectedObj).getEntityType() == Volume.class) {
- volumes = (EntityGroup<Volume>) selectedObj;
- }
- }
-
- setPartName("Summary");
- createSections(parent);
-
- clusterListener = new DefaultClusterListener() {
- @Override
- public void volumeCreated(Volume volume) {
- super.volumeCreated(volume);
- updateSummarySection();
- }
-
- @Override
- public void volumeDeleted(Volume volume) {
- super.volumeDeleted(volume);
- updateSummarySection();
- }
-
- @Override
- public void volumeChanged(Volume volume, Event event) {
- super.volumeChanged(volume, event);
- updateSummarySection();
- }
-
- private void updateAlertSection() {
- guiHelper.clearSection(alertsSection);
- populateAlertSection();
- }
-
- private void updateSummarySection() {
- guiHelper.clearSection(summarySection);
- populateSummarySection();
- summarySection.layout();
- form.reflow(true);
- }
-
- @Override
- public void alertsGenerated() {
- super.alertsGenerated();
- guiHelper.clearSection(alertsSection);
- populateAlertSection();
- }
-
- @Override
- public void alertRemoved(Alert alert) {
- super.alertRemoved(alert);
- updateAlertSection();
- }
-
- @Override
- public void alertCreated(Alert alert) {
- super.alertCreated(alert);
- updateAlertSection();
- }
-
- @Override
- public void taskAdded(TaskInfo taskInfo) {
- super.taskAdded(taskInfo);
- updateTasksSection();
- }
-
- @Override
- public void taskRemoved(TaskInfo taskInfo) {
- super.taskRemoved(taskInfo);
- updateTasksSection();
- }
-
- @Override
- public void taskUpdated(TaskInfo taskInfo) {
- super.taskUpdated(taskInfo);
- updateTasksSection();
- }
-
- private void updateTasksSection() {
- guiHelper.clearSection(tasksSection);
- populateTasks();
- }
- };
- GlusterDataModelManager.getInstance().addClusterListener(clusterListener);
- }
-
- @Override
- public void dispose() {
- super.dispose();
- GlusterDataModelManager.getInstance().removeClusterListener(clusterListener);
- }
-
- private void createSections(Composite parent) {
- form = guiHelper.setupForm(parent, toolkit, VOLUMES_SUMMARY);
- createSummarySection();
- createTasksSection();
- createAlertsSection();
-
- parent.layout(); // IMP: lays out the form properly
- }
-
- private void createAlertsSection() {
- alertsSection = guiHelper.createSection(form, toolkit, ALERTS, null, 1, false);
- populateAlertSection();
- }
-
- private void populateAlertSection() {
- for (Alert alert : cluster.getAlerts()) {
- if (alert.getType() == Alert.ALERT_TYPES.OFFLINE_VOLUME_BRICKS_ALERT
- || alert.getType() == Alert.ALERT_TYPES.OFFLINE_VOLUME_ALERT) {
- addAlertLabel(alertsSection, alert);
- }
- }
- alertsSection.pack(true);
- form.reflow(true);
- }
-
- private void addAlertLabel(Composite section, Alert alert) {
- CLabel lblAlert = new CLabel(section, SWT.NONE);
-
- Image alertImage = null;
- switch (alert.getType()) {
- case OFFLINE_VOLUME_BRICKS_ALERT:
- alertImage = guiHelper.getImage(IImageKeys.BRICK_OFFLINE_22x22);
- break;
- case OFFLINE_VOLUME_ALERT:
- alertImage = guiHelper.getImage(IImageKeys.VOLUME_OFFLINE_22x22);
- break;
- }
- lblAlert.setImage(alertImage);
- lblAlert.setText(alert.getMessage());
- lblAlert.redraw();
- }
-
- private void createTasksSection() {
- tasksSection = guiHelper.createSection(form, toolkit, CoreConstants.RUNNING_TASKS, null, 1, false);
- populateTasks();
- }
-
- private void populateTasks() {
- for (TaskInfo taskInfo : cluster.getTaskInfoList()) {
- if ((taskInfo.getType() == TASK_TYPE.BRICK_MIGRATE || taskInfo.getType() == TASK_TYPE.VOLUME_REBALANCE)
- && taskInfo.getStatus().getCode() != Status.STATUS_CODE_SUCCESS)
- addTaskLabel(tasksSection, taskInfo);
- }
- tasksSection.pack(true);
- form.reflow(true);
- }
-
- private void addTaskLabel(Composite section, TaskInfo taskInfo) {
- // Task related to Volumes context
- if (taskInfo.getStatus().isPercentageSupported()) {
- // TODO Progress bar or link to progress view
- }
-
- CLabel lblTask = new CLabel(section, SWT.NONE);
- String description = taskInfo.getDescription();
- switch (taskInfo.getStatus().getCode()) {
- case Status.STATUS_CODE_PAUSE:
- description += " (paused)";
- break;
- case Status.STATUS_CODE_COMMIT_PENDING:
- description += " (commit pending)";
- break;
- case Status.STATUS_CODE_FAILURE:
- description += " (failed)";
- break;
- }
- lblTask.setText(description);
- lblTask.setImage((taskInfo.getType() == TASK_TYPE.BRICK_MIGRATE) ? guiHelper
- .getImage(IImageKeys.BRICK_MIGRATE_32x32) : guiHelper.getImage(IImageKeys.VOLUME_REBALANCE_32x32));
- lblTask.redraw();
- }
-
- private void createSummarySection() {
- summarySection = guiHelper.createSection(form, toolkit, AVAILABILITY, null, 2, false);
- populateSummarySection();
- }
-
- private void populateSummarySection() {
- if(volumes.getEntities().size() == 0) {
- toolkit.createLabel(summarySection,
- "This section will be populated after at least" + CoreConstants.NEWLINE +"one volume is created the storage cloud.");
- return;
- }
-
- Double[] values = new Double[] { Double.valueOf(getVolumeCountByStatus(volumes, VOLUME_STATUS.ONLINE)),
- Double.valueOf(getVolumeCountByStatus(volumes, VOLUME_STATUS.OFFLINE)) };
- createStatusChart(toolkit, summarySection, values);
- }
-
- private int getVolumeCountByStatus(EntityGroup<Volume> volumes, VOLUME_STATUS status) {
- int count = 0;
- for (Volume 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" };
- ChartViewerComposite chartViewerComposite = new ChartViewerComposite(section, SWT.NONE, categories, values);
-
- GridData data = new GridData(SWT.FILL, SWT.FILL, false, false);
- data.widthHint = 300;
- data.heightHint = 150;
- chartViewerComposite.setLayoutData(data);
- }
-
- /*
- * (non-Javadoc)
- *
- * @see org.eclipse.ui.part.WorkbenchPart#setFocus()
- */
- @Override
- public void setFocus() {
- if (form != null) {
- form.setFocus();
- }
- }
-}
diff --git a/src/com.gluster.storage.management.console/src/com/gluster/storage/management/console/views/VolumesView.java b/src/com.gluster.storage.management.console/src/com/gluster/storage/management/console/views/VolumesView.java
deleted file mode 100644
index 4deeace2..00000000
--- a/src/com.gluster.storage.management.console/src/com/gluster/storage/management/console/views/VolumesView.java
+++ /dev/null
@@ -1,80 +0,0 @@
-/**
- * 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.console.views;
-
-import org.eclipse.jface.viewers.DoubleClickEvent;
-import org.eclipse.jface.viewers.IDoubleClickListener;
-import org.eclipse.jface.viewers.StructuredSelection;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.ui.part.ViewPart;
-
-import com.gluster.storage.management.console.utils.GUIHelper;
-import com.gluster.storage.management.console.views.pages.VolumesPage;
-import com.gluster.storage.management.core.model.Entity;
-import com.gluster.storage.management.core.model.EntityGroup;
-import com.gluster.storage.management.core.model.Volume;
-
-/**
- *
- */
-public class VolumesView extends ViewPart implements IDoubleClickListener {
- public static final String ID = VolumesView.class.getName();
- private static final GUIHelper guiHelper = GUIHelper.getInstance();
- private EntityGroup<Volume> volumes;
- private VolumesPage page;
-
- /*
- * (non-Javadoc)
- *
- * @see org.eclipse.ui.part.WorkbenchPart#createPartControl(org.eclipse.swt.widgets.Composite)
- */
- @SuppressWarnings({ "unchecked", "rawtypes" })
- @Override
- public void createPartControl(Composite parent) {
- if (volumes == null) {
- Object selectedObj = guiHelper.getSelectedEntity(getSite(), EntityGroup.class);
- if (selectedObj != null && ((EntityGroup) selectedObj).getEntityType() == Volume.class) {
- volumes = (EntityGroup<Volume>)selectedObj;
- }
- }
-
- page = new VolumesPage(parent, getSite(), volumes);
- page.addDoubleClickListener(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());
- }
- }
-}
diff --git a/src/com.gluster.storage.management.console/src/com/gluster/storage/management/console/views/pages/AbstractDisksPage.java b/src/com.gluster.storage.management.console/src/com/gluster/storage/management/console/views/pages/AbstractDisksPage.java
deleted file mode 100644
index 43a7e61a..00000000
--- a/src/com.gluster.storage.management.console/src/com/gluster/storage/management/console/views/pages/AbstractDisksPage.java
+++ /dev/null
@@ -1,335 +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.console.views.pages;
-
-import java.net.URI;
-import java.util.ArrayList;
-import java.util.List;
-
-import org.eclipse.jface.dialogs.MessageDialog;
-import org.eclipse.jface.viewers.TreeViewer;
-import org.eclipse.jface.window.Window;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.custom.TreeEditor;
-import org.eclipse.swt.events.DisposeEvent;
-import org.eclipse.swt.events.DisposeListener;
-import org.eclipse.swt.events.PaintEvent;
-import org.eclipse.swt.events.PaintListener;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.swt.widgets.Tree;
-import org.eclipse.swt.widgets.TreeItem;
-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.ImageHyperlink;
-
-import com.gluster.storage.management.client.GlusterServersClient;
-import com.gluster.storage.management.client.TasksClient;
-import com.gluster.storage.management.console.Application;
-import com.gluster.storage.management.console.GlusterDataModelManager;
-import com.gluster.storage.management.console.IEntityListener;
-import com.gluster.storage.management.console.dialogs.InitDiskDialog;
-import com.gluster.storage.management.console.utils.GlusterLogger;
-import com.gluster.storage.management.core.exceptions.GlusterRuntimeException;
-import com.gluster.storage.management.core.model.ClusterListener;
-import com.gluster.storage.management.core.model.DefaultClusterListener;
-import com.gluster.storage.management.core.model.Device;
-import com.gluster.storage.management.core.model.Device.DEVICE_STATUS;
-import com.gluster.storage.management.core.model.Disk;
-import com.gluster.storage.management.core.model.Entity;
-import com.gluster.storage.management.core.model.Event;
-import com.gluster.storage.management.core.model.Event.EVENT_TYPE;
-import com.gluster.storage.management.core.model.GlusterServer;
-import com.gluster.storage.management.core.model.Status;
-import com.gluster.storage.management.core.model.TaskInfo;
-
-public abstract class AbstractDisksPage extends AbstractTableTreeViewerPage<Disk> implements IEntityListener {
- protected List<Disk> disks;
- protected static final GlusterLogger logger = GlusterLogger.getInstance();
-
- /**
- * @return Index of the "status" column in the table. Return -1 if status column is not displayed
- */
- protected abstract int getStatusColumnIndex();
-
- public AbstractDisksPage(final Composite parent, int style, IWorkbenchSite site, List<Disk> disks) {
- super(site, parent, style, false, true, disks);
- this.disks = disks;
-
- // creates hyperlinks for "uninitialized" disks
- setupStatusCellEditor();
- // Listen for disk status change events
- Application.getApplication().addEntityListener(this);
- }
-
- protected ClusterListener createClusterListener() {
- return new DefaultClusterListener() {
- @Override
- public void serverChanged(GlusterServer server, Event event) {
- super.serverChanged(server, event);
- EVENT_TYPE eventType = event.getEventType();
- switch (eventType) {
- case DEVICES_REMOVED:
- case DEVICES_ADDED:
- case DEVICES_CHANGED:
- case GLUSTER_SERVER_CHANGED:
- treeViewer.refresh(true);
- default:
- break;
- }
- }
- };
- }
-
- private void createInitializeLink(final TreeItem item, final int rowNum, final Device uninitializedDevice) {
- final Tree tree = treeViewer.getTree();
- final TreeEditor editor = new TreeEditor(tree);
- editor.grabHorizontal = true;
- editor.horizontalAlignment = SWT.RIGHT;
-
- tree.addPaintListener(new PaintListener() {
- private TreeItem myItem = item;
- private int myRowNum = rowNum;
- private ImageHyperlink myLink = null;
- private TreeEditor myEditor = null;
-
- private void createLinkFor(Device uninitializedDevice, TreeItem item1, int rowNum1) {
- myItem = item1;
- myRowNum = rowNum1;
-
- myEditor = new TreeEditor(tree);
- myEditor.grabHorizontal = true;
- myEditor.horizontalAlignment = SWT.RIGHT;
-
- myLink = toolkit.createImageHyperlink(tree, SWT.NONE);
- // link.setImage(guiHelper.getImage(IImageKeys.DISK_UNINITIALIZED));
- myLink.setText("Initialize");
- myLink.addHyperlinkListener(new StatusLinkListener(myLink, myEditor, treeViewer, uninitializedDevice));
-
- myEditor.setEditor(myLink, item1, getStatusColumnIndex());
-
- myItem.addDisposeListener(new DisposeListener() {
- @Override
- public void widgetDisposed(DisposeEvent e) {
- myLink.dispose();
- myEditor.dispose();
- }
- });
- }
-
- @Override
- public void paintControl(PaintEvent e) {
- int itemCount = tree.getItemCount();
-
- // Find the table item corresponding to our disk
-
- Device device = null;
- int rowNum1 = -1;
- TreeItem item1 = null;
-
- mainloop:
- for (int i = 0; i < itemCount; i++) {
- item1 = tree.getItem(i);
-
- device = (Device) item1.getData();
- if (device != null && device == uninitializedDevice) {
- // this is an uninitialized "disk"
- rowNum1 = i;
- break;
- }
-
- int partitionCount = item1.getItemCount();
- for(int j = 0; j < partitionCount; j++) {
- TreeItem partitionItem = item1.getItem(j);
- // check each partition
- Device partition = (Device)partitionItem.getData();
- if(partition != null && partition == uninitializedDevice) {
- // this is an uninitialized "partition"
- rowNum1 = i + j;
- item1 = partitionItem;
- device = partition;
- // found the uninitialized device. break out.
- break mainloop;
- }
- }
- }
-
- if (rowNum1 == -1) {
- // item disposed and disk not visible. nothing to do.
- return;
- }
-
- if (myEditor == null || myItem.isDisposed()) {
- // item visible, and
- // either editor never created, OR
- // old item disposed. create the link for it
- createLinkFor(device, item1, rowNum1);
- }
-
- if (rowNum1 != myRowNum) {
- // disk visible, but at a different row num. re-create the link
- myLink.dispose();
- myEditor.dispose();
- createLinkFor(device, item1, rowNum1);
- }
-
- myEditor.layout(); // IMPORTANT. Without this, the link location goes for a toss on maximize + restore
- }
- });
- }
-
- private void setupStatusCellEditor() {
- final TreeViewer viewer = treeViewer;
- final Tree tree = viewer.getTree();
- int rowNum = 0;
- for (int i = 0; i < tree.getItemCount(); i++, rowNum++) {
- final TreeItem item = tree.getItem(i);
- if (item.isDisposed() || item.getData() == null) {
- continue;
- }
- final Disk disk = (Disk) item.getData();
- if (disk.isUninitialized()) {
- createInitializeLink(item, rowNum, disk);
- }
-
- if (disk.hasPartitions()) {
- for(int j = 0; j < disk.getPartitions().size(); j++, rowNum++) {
- TreeItem partitionItem = item.getItem(j);
- // check each partition
- Device partition = (Device)partitionItem.getData();
- if (partition.isUninitialized()) {
- createInitializeLink(partitionItem, rowNum, partition);
- }
- }
- }
- }
- }
-
- private final class StatusLinkListener extends HyperlinkAdapter {
- private final Device device;
- private final TreeEditor myEditor;
- private final ImageHyperlink myLink;
- private final TreeViewer viewer;
-
- private StatusLinkListener(ImageHyperlink link, TreeEditor editor, TreeViewer viewer, Device device) {
- this.device = device;
- this.viewer = viewer;
- this.myEditor = editor;
- this.myLink = link;
- }
-
- private void updateStatus(final DEVICE_STATUS status, final boolean disposeEditor) {
- if (disposeEditor) {
- myLink.dispose();
- myEditor.dispose();
- }
- device.setStatus(status);
- viewer.update(device, new String[] { "status" });
- Application.getApplication().entityChanged(device, new String[] { "status" });
- }
-
- @Override
- public void linkActivated(HyperlinkEvent e) {
- GlusterDataModelManager modelManager = GlusterDataModelManager.getInstance();
-
- // If the same task is already running return
- String reference = device.getServerName() + ":" + device.getName();
- TaskInfo existingTaskInfo = modelManager.getTaskByReference(reference);
- if (existingTaskInfo != null && existingTaskInfo.getStatus().getCode() != Status.STATUS_CODE_SUCCESS
- && existingTaskInfo.getStatus().getCode() != Status.STATUS_CODE_FAILURE) {
- MessageDialog.openInformation(getShell(), "Initialize disk - Error", "Initializing disk [" + reference
- + "] is already in progress! Try later.");
- return;
- }
-
- // To collect the available fsType
- GlusterServersClient serversClient = new GlusterServersClient();
- List<String> fsTypes = new ArrayList<String>();
- try {
- fsTypes = serversClient.getFSTypes(device.getServerName());
- } catch (GlusterRuntimeException e1) {
- MessageDialog.openError(getShell(), "Initialize disk - Error", e1.getMessage());
- return;
- }
-
- InitDiskDialog formatDialog = new InitDiskDialog(getShell(), device.getName(), fsTypes);
- int userAction = formatDialog.open();
- if (userAction == Window.CANCEL) {
- // formatDialog.cancelPressed();
- return;
- }
-
- try {
-
- URI uri = serversClient.initializeDisk(device.getServerName(), device.getName(), formatDialog.getFSType(), formatDialog.getMountPoint());
-
- TasksClient taskClient = new TasksClient();
- TaskInfo taskInfo = taskClient.getTaskInfo(uri);
-
- if (taskInfo != null) {
- modelManager.addTask(taskInfo);
- }
-
- if (taskInfo.getStatus().getCode() == Status.STATUS_CODE_RUNNING) {
- updateStatus(DEVICE_STATUS.INITIALIZING, true);
- } else if (taskInfo.getStatus().getCode() == Status.STATUS_CODE_SUCCESS) {
- // If format completed (instantly), get the server details and update the server in the model
- GlusterServer oldServer = modelManager.getModel().getCluster().getServer(device.getServerName());
- GlusterServer newServer = serversClient.getGlusterServer(device.getServerName());
- modelManager.glusterServerChanged(oldServer, newServer);
- // updateStatus(DEVICE_STATUS.INITIALIZED, true);
- // GlusterDataModelManager.getInstance().updateDeviceStatus(device.getServerName(), device.getName(),
- // DEVICE_STATUS.INITIALIZED);
- } else {
- MessageDialog.openError(getShell(), "Initialize disk - Error", taskInfo.getStatus().getMessage());
- }
- guiHelper.showTaskView();
- } catch (Exception e1) {
- logger.error("Exception while initialize disk", e1);
- MessageDialog.openError(getShell(), "Initialize disk - Error", e1.getMessage());
- }
- }
- }
-
- @Override
- public void entityChanged(final Entity entity, final String[] paremeters) {
- if (!(entity instanceof Device)) {
- return;
- }
- final Device device = (Device) entity;
-
- Display.getDefault().syncExec(new Runnable() {
- public void run() {
- treeViewer.update(device, paremeters);
-
- if (device.isUninitialized()) {
- Tree tree = treeViewer.getTree();
-
- for (int rowNum = 0; rowNum < tree.getItemCount(); rowNum++) {
- TreeItem item = tree.getItem(rowNum);
- if (item.getData() == device) {
- createInitializeLink(item, rowNum, device);
- }
- }
- }
- }
- });
- }
-}
diff --git a/src/com.gluster.storage.management.console/src/com/gluster/storage/management/console/views/pages/AbstractTableTreeViewerPage.java b/src/com.gluster.storage.management.console/src/com/gluster/storage/management/console/views/pages/AbstractTableTreeViewerPage.java
deleted file mode 100644
index 7414bbc3..00000000
--- a/src/com.gluster.storage.management.console/src/com/gluster/storage/management/console/views/pages/AbstractTableTreeViewerPage.java
+++ /dev/null
@@ -1,191 +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.console.views.pages;
-
-import java.util.List;
-
-import org.eclipse.jface.layout.TreeColumnLayout;
-import org.eclipse.jface.viewers.ColumnWeightData;
-import org.eclipse.jface.viewers.IBaseLabelProvider;
-import org.eclipse.jface.viewers.IContentProvider;
-import org.eclipse.jface.viewers.ISelection;
-import org.eclipse.jface.viewers.TreeViewer;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.DisposeEvent;
-import org.eclipse.swt.events.DisposeListener;
-import org.eclipse.swt.events.PaintEvent;
-import org.eclipse.swt.events.PaintListener;
-import org.eclipse.swt.layout.FillLayout;
-import org.eclipse.swt.layout.GridData;
-import org.eclipse.swt.layout.GridLayout;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.swt.widgets.Text;
-import org.eclipse.swt.widgets.TreeColumn;
-import org.eclipse.ui.ISelectionListener;
-import org.eclipse.ui.IWorkbenchPart;
-import org.eclipse.ui.IWorkbenchSite;
-import org.eclipse.ui.forms.widgets.FormToolkit;
-
-import com.gluster.storage.management.console.GlusterDataModelManager;
-import com.gluster.storage.management.console.utils.GUIHelper;
-import com.gluster.storage.management.core.model.ClusterListener;
-import com.gluster.storage.management.core.model.Disk;
-
-public abstract class AbstractTableTreeViewerPage<T> extends Composite implements ISelectionListener {
-
- protected final FormToolkit toolkit = new FormToolkit(Display.getCurrent());
- protected TreeViewer treeViewer;
- protected GUIHelper guiHelper = GUIHelper.getInstance();
- protected Composite parent;
- protected IWorkbenchSite site;
- private ClusterListener clusterListener;
-
- private Text filterText;
-
- private void setupPageLayout() {
- final GridLayout layout = new GridLayout(1, false);
- layout.verticalSpacing = 10;
- layout.marginTop = 10;
- setLayout(layout);
- }
-
- private Composite createTreeViewerComposite() {
- Composite tableViewerComposite = new Composite(this, SWT.NO);
- tableViewerComposite.setLayout(new FillLayout(SWT.HORIZONTAL));
- tableViewerComposite.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
-
- GridData layoutData = new GridData();
- layoutData.horizontalSpan=5;
- layoutData.grabExcessHorizontalSpace = true;
- layoutData.horizontalAlignment = SWT.FILL;
- layoutData.verticalAlignment = SWT.FILL;
- layoutData.grabExcessVerticalSpace = true;
- tableViewerComposite.setLayoutData(layoutData);
-
- return tableViewerComposite;
- }
-
-
- public AbstractTableTreeViewerPage(IWorkbenchSite site, final Composite parent, int style, boolean useChechboxes,
- boolean multiSelection, List<Disk> allDisks) {
- super(parent, style);
-
- setupPageLayout();
- //new FormToolkit(Display.getCurrent()).createButton(this, "test1", SWT.PUSH);
-
- this.parent = parent;
- this.site = site;
-
- toolkit.adapt(this);
- toolkit.paintBordersFor(this);
-
- GridData data = new GridData(SWT.FILL, SWT.FILL, true, true);
- parent.setLayoutData(data);
-
- filterText = guiHelper.createFilterText(toolkit, this);
-
- Composite tableViewerComposite = createTreeViewerComposite();
- createTreeViewer(allDisks, tableViewerComposite);
- parent.layout(); // Important - this actually paints the table
-
- createListeners(parent);
- }
-
- private void createListeners(final Composite parent) {
- /**
- * Ideally not required. However the table viewer is not getting laid out properly on performing
- * "maximize + restore" So this is a hack to make sure that the table is laid out again on re-size of the window
- */
- addPaintListener(new PaintListener() {
-
- @Override
- public void paintControl(PaintEvent e) {
- parent.layout();
- }
- });
-
- clusterListener = createClusterListener();
- GlusterDataModelManager.getInstance().addClusterListener(clusterListener);
-
- addDisposeListener(new DisposeListener() {
-
- @Override
- public void widgetDisposed(DisposeEvent e) {
- toolkit.dispose();
- GlusterDataModelManager.getInstance().removeClusterListener(clusterListener);
- }
- });
- }
-
- protected abstract ClusterListener createClusterListener();
- protected abstract IBaseLabelProvider getLabelProvider();
- protected abstract IContentProvider getContentProvider();
-
- private void createTreeViewer(List<Disk> allDisks, Composite tableViewerComposite) {
- treeViewer = new TreeViewer(tableViewerComposite);
- treeViewer.getTree().setHeaderVisible(true);
- treeViewer.getTree().setLinesVisible(true);
-
- TreeColumnLayout ad = new TreeColumnLayout();
- tableViewerComposite.setLayout(ad);
-
- TreeColumn column = new TreeColumn(treeViewer.getTree(),SWT.NONE);
- column.setWidth(100);
- column.setText("Disk");
- ad.setColumnData(column, new ColumnWeightData(50, 100));
-
- column = new TreeColumn(treeViewer.getTree(),SWT.NONE);
- column.setWidth(100);
- column.setText("Partition");
- ad.setColumnData(column,new ColumnWeightData(50, 100));
-
- column = new TreeColumn(treeViewer.getTree(),SWT.NONE);
- column.setWidth(100);
- column.setText("Free Space (GB)");
- ad.setColumnData(column, new ColumnWeightData(50, 100));
-
- column = new TreeColumn(treeViewer.getTree(),SWT.NONE);
- column.setWidth(100);
- column.setText("Total Space (GB)");
- ad.setColumnData(column,new ColumnWeightData(50, 100));
-
- column = new TreeColumn(treeViewer.getTree(),SWT.NONE);
- column.setWidth(100);
- column.setText("Status");
- ad.setColumnData(column,new ColumnWeightData(50, 100));
-
- treeViewer.setLabelProvider(getLabelProvider());
- treeViewer.setContentProvider(getContentProvider());
- treeViewer.setInput(allDisks);
-
- // Create a case insensitive filter for the table viewer using the filter text field
- guiHelper.createFilter(treeViewer, filterText, false);
-
- treeViewer.expandAll();
- }
-
-
- /* (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) {
- }
-}
diff --git a/src/com.gluster.storage.management.console/src/com/gluster/storage/management/console/views/pages/AbstractTableViewerPage.java b/src/com.gluster.storage.management.console/src/com/gluster/storage/management/console/views/pages/AbstractTableViewerPage.java
deleted file mode 100644
index c80740f3..00000000
--- a/src/com.gluster.storage.management.console/src/com/gluster/storage/management/console/views/pages/AbstractTableViewerPage.java
+++ /dev/null
@@ -1,263 +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.console.views.pages;
-
-import java.util.List;
-
-import org.eclipse.jface.layout.TableColumnLayout;
-import org.eclipse.jface.viewers.CheckboxTableViewer;
-import org.eclipse.jface.viewers.IBaseLabelProvider;
-import org.eclipse.jface.viewers.IContentProvider;
-import org.eclipse.jface.viewers.IDoubleClickListener;
-import org.eclipse.jface.viewers.ISelection;
-import org.eclipse.jface.viewers.StructuredSelection;
-import org.eclipse.jface.viewers.TableViewer;
-import org.eclipse.jface.viewers.ViewerComparator;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.DisposeEvent;
-import org.eclipse.swt.events.DisposeListener;
-import org.eclipse.swt.events.PaintEvent;
-import org.eclipse.swt.events.PaintListener;
-import org.eclipse.swt.events.SelectionAdapter;
-import org.eclipse.swt.events.SelectionEvent;
-import org.eclipse.swt.layout.FillLayout;
-import org.eclipse.swt.layout.GridData;
-import org.eclipse.swt.layout.GridLayout;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.swt.widgets.Table;
-import org.eclipse.swt.widgets.TableColumn;
-import org.eclipse.swt.widgets.Text;
-import org.eclipse.ui.ISelectionListener;
-import org.eclipse.ui.IWorkbenchPart;
-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.Hyperlink;
-
-import com.gluster.storage.management.console.GlusterDataModelManager;
-import com.gluster.storage.management.console.utils.GUIHelper;
-import com.gluster.storage.management.console.utils.TableViewerComparator;
-import com.gluster.storage.management.core.model.ClusterListener;
-
-public abstract class AbstractTableViewerPage<T> extends Composite implements ISelectionListener {
-
- private boolean useCheckboxes;
- private boolean multiSelection;
-
- protected final FormToolkit toolkit = new FormToolkit(Display.getCurrent());
- protected TableViewer tableViewer;
- protected GUIHelper guiHelper = GUIHelper.getInstance();
- protected Composite parent;
- protected IWorkbenchSite site;
-
- private Hyperlink linkAll, linkNone;
- private ClusterListener clusterListener;
-
- public AbstractTableViewerPage(IWorkbenchSite site, final Composite parent, int style, boolean useChechboxes, boolean multiSelection, Object model) {
- super(parent, style);
- this.parent = parent;
- this.site = site;
-
- this.useCheckboxes = useChechboxes;
- this.multiSelection = multiSelection;
-
- toolkit.adapt(this);
- toolkit.paintBordersFor(this);
-
- setupPageLayout();
-
- createCheckboxSelectionLinks();
-
- Text filterText = guiHelper.createFilterText(toolkit, this);
-
- setupTableViewer(site, filterText);
- tableViewer.setInput(model);
- // register as selection provider so that other views can listen to any selection events on the tree
- site.setSelectionProvider(tableViewer);
- site.getPage().addSelectionListener(this);
-
-
- parent.layout(); // Important - this actually paints the table
-
- createListeners(parent);
- }
-
- public void createCheckboxSelectionLinks() {
- if (useCheckboxes) {
- // create the "select all/none" links
- toolkit.createLabel(this, "Select");
- linkAll = toolkit.createHyperlink(this, "all", SWT.NONE);
- linkAll.addHyperlinkListener(new HyperlinkAdapter() {
- @Override
- public void linkActivated(org.eclipse.ui.forms.events.HyperlinkEvent e) {
- ((CheckboxTableViewer) tableViewer).setAllChecked(true);
- tableViewer.setSelection(new StructuredSelection(getAllEntities()));
- }
- });
-
- toolkit.createLabel(this, " / ");
-
- linkNone = toolkit.createHyperlink(this, "none", SWT.NONE);
- linkNone.addHyperlinkListener(new HyperlinkAdapter() {
- @Override
- public void linkActivated(org.eclipse.ui.forms.events.HyperlinkEvent e) {
- ((CheckboxTableViewer) tableViewer).setAllChecked(false);
- tableViewer.setSelection(StructuredSelection.EMPTY);
- }
- });
- } else {
- // create dummy labels to maintain layout
- toolkit.createLabel(this, "");
- toolkit.createLabel(this, "");
- toolkit.createLabel(this, "");
- toolkit.createLabel(this, "");
- }
- }
-
- private void createListeners(final Composite parent) {
- /**
- * Ideally not required. However the table viewer is not getting laid out properly on performing
- * "maximize + restore" So this is a hack to make sure that the table is laid out again on re-size of the window
- */
- addPaintListener(new PaintListener() {
-
- @Override
- public void paintControl(PaintEvent e) {
- parent.layout();
- }
- });
-
- clusterListener = createClusterListener();
- GlusterDataModelManager.getInstance().addClusterListener(clusterListener);
-
- addDisposeListener(new DisposeListener() {
-
- @Override
- public void widgetDisposed(DisposeEvent e) {
- toolkit.dispose();
- GlusterDataModelManager.getInstance().removeClusterListener(clusterListener);
- }
- });
- }
-
- protected abstract ClusterListener createClusterListener();
- protected abstract String[] getColumnNames();
- protected abstract void setColumnProperties(Table table);
- protected abstract IBaseLabelProvider getLabelProvider();
- protected abstract IContentProvider getContentProvider();
- protected abstract List<T> getAllEntities();
-
- public void addDoubleClickListener(IDoubleClickListener listener) {
- tableViewer.addDoubleClickListener(listener);
- }
-
- private void setupPageLayout() {
- final GridLayout layout = new GridLayout(5, false);
- layout.verticalSpacing = 10;
- layout.marginTop = 10;
- setLayout(layout);
- }
-
- protected void setupTable(Composite parent, Table table) {
- table.setHeaderVisible(true);
- table.setLinesVisible(false);
-
- TableColumnLayout tableColumnLayout = guiHelper.createTableColumnLayout(table, getColumnNames());
- parent.setLayout(tableColumnLayout);
-
- setColumnProperties(table);
- }
-
- private void createTableViewer(Composite parent) {
- int style = SWT.FLAT | SWT.FULL_SELECTION;
- style |= (multiSelection ? SWT.MULTI : SWT.SINGLE);
-
- if(useCheckboxes) {
- tableViewer = CheckboxTableViewer.newCheckList(parent, style);
- } else {
- tableViewer = new TableViewer(parent, style);
- }
-
- tableViewer.setLabelProvider(getLabelProvider());
- tableViewer.setContentProvider(getContentProvider());
- setupTable(parent, tableViewer.getTable());
- }
-
- private Composite createTableViewerComposite() {
- Composite tableViewerComposite = new Composite(this, SWT.NO);
- tableViewerComposite.setLayout(new FillLayout(SWT.HORIZONTAL));
- tableViewerComposite.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
-
- GridData layoutData = new GridData();
- layoutData.horizontalSpan=5;
- layoutData.grabExcessHorizontalSpace = true;
- layoutData.horizontalAlignment = SWT.FILL;
- layoutData.verticalAlignment = SWT.FILL;
- layoutData.grabExcessVerticalSpace = true;
- tableViewerComposite.setLayoutData(layoutData);
-
- return tableViewerComposite;
- }
-
- private void setupTableViewer(IWorkbenchSite site, final Text filterText) {
- Composite tableViewerComposite = createTableViewerComposite();
- createTableViewer(tableViewerComposite);
- site.setSelectionProvider(tableViewer);
-
- if(useCheckboxes) {
- // make sure that table selection is driven by checkbox selection
- guiHelper.configureCheckboxTableViewer((CheckboxTableViewer)tableViewer);
- }
-
- // Create a case insensitive filter for the table viewer using the filter text field
- guiHelper.createFilter(tableViewer, filterText, false);
-
- tableViewer.setComparator(createViewerComparator());
- for (int columnIndex = 0; columnIndex < tableViewer.getTable().getColumnCount(); columnIndex++) {
- TableColumn column = tableViewer.getTable().getColumn(columnIndex);
- column.addSelectionListener(getColumnSelectionAdapter(column, columnIndex));
- }
- }
-
- private SelectionAdapter getColumnSelectionAdapter(final TableColumn column, final int columnIndex) {
- return new SelectionAdapter() {
- @Override
- public void widgetSelected(SelectionEvent e) {
- ViewerComparator viewerComparator = tableViewer.getComparator();
- if(viewerComparator instanceof TableViewerComparator) {
- TableViewerComparator comparator = (TableViewerComparator)viewerComparator;
- comparator.setColumn(columnIndex);
- tableViewer.getTable().setSortDirection(comparator.getDirection());
- tableViewer.getTable().setSortColumn(column);
- tableViewer.refresh();
- }
- }
- };
- }
-
- protected abstract ViewerComparator createViewerComparator();
-
- /* (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) {
- }
-}
diff --git a/src/com.gluster.storage.management.console/src/com/gluster/storage/management/console/views/pages/BricksPage.java b/src/com.gluster.storage.management.console/src/com/gluster/storage/management/console/views/pages/BricksPage.java
deleted file mode 100644
index 674074c3..00000000
--- a/src/com.gluster.storage.management.console/src/com/gluster/storage/management/console/views/pages/BricksPage.java
+++ /dev/null
@@ -1,123 +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.console.views.pages;
-
-import java.util.Collection;
-import java.util.List;
-import java.util.Map;
-
-import org.eclipse.jface.viewers.ArrayContentProvider;
-import org.eclipse.jface.viewers.IContentProvider;
-import org.eclipse.jface.viewers.ITableLabelProvider;
-import org.eclipse.jface.viewers.ViewerComparator;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Table;
-import org.eclipse.ui.IWorkbenchSite;
-
-import com.gluster.storage.management.console.BrickTableLabelProvider;
-import com.gluster.storage.management.core.model.Brick;
-import com.gluster.storage.management.core.model.ClusterListener;
-import com.gluster.storage.management.core.model.DefaultClusterListener;
-import com.gluster.storage.management.core.model.Event;
-import com.gluster.storage.management.core.model.Volume;
-
-public class BricksPage extends AbstractTableViewerPage<Brick> {
- private List<Brick> bricks;
-
- public enum BRICK_TABLE_COLUMN_INDICES {
- SERVER, BRICK, FREE_SPACE, TOTAL_SPACE, STATUS
- };
-
- private static final String[] DISK_TABLE_COLUMN_NAMES = new String[] { "Server", "Brick Directory", "Free Space (GB)",
- "Total Space (GB)", "Status" };
-
- public BricksPage(Composite parent, int style, IWorkbenchSite site, final List<Brick> bricks) {
- super(site, parent, style, true, true, bricks);
- this.bricks = bricks;
- }
-
- @Override
- protected ClusterListener createClusterListener() {
- return new DefaultClusterListener() {
- @SuppressWarnings("unchecked")
- @Override
- public void volumeChanged(Volume volume, Event event) {
- switch (event.getEventType()) {
- case BRICKS_ADDED:
- tableViewer.add(((Collection<Brick>) event.getEventData()).toArray());
- parent.update();
- break;
-
- case BRICKS_REMOVED:
- tableViewer.remove(((Collection<Brick>) event.getEventData()).toArray());
- parent.update();
- break;
-
- case BRICKS_CHANGED:
- Object eventData = event.getEventData();
- Brick[] updatedBricks;
- if(eventData instanceof Map) {
- updatedBricks = ((Map<Brick, Brick>) eventData).keySet().toArray(new Brick[0]);
- } else {
- updatedBricks = ((Collection<Brick>)eventData).toArray(new Brick[0]);
- }
- tableViewer.update(updatedBricks, null);
- parent.update();
- tableViewer.refresh(true);
- default:
- break;
- }
- }
- };
- }
-
- @Override
- protected String[] getColumnNames() {
- return DISK_TABLE_COLUMN_NAMES;
- }
-
- @Override
- protected void setColumnProperties(Table table) {
- guiHelper.setColumnProperties(table, BRICK_TABLE_COLUMN_INDICES.SERVER.ordinal(), SWT.CENTER, 100);
- guiHelper.setColumnProperties(table, BRICK_TABLE_COLUMN_INDICES.BRICK.ordinal(), SWT.CENTER, 100);
- guiHelper.setColumnProperties(table, BRICK_TABLE_COLUMN_INDICES.FREE_SPACE.ordinal(), SWT.CENTER, 90);
- guiHelper.setColumnProperties(table, BRICK_TABLE_COLUMN_INDICES.TOTAL_SPACE.ordinal(), SWT.CENTER, 90);
- }
-
- @Override
- protected ITableLabelProvider getLabelProvider() {
- return new BrickTableLabelProvider();
- }
-
- @Override
- protected IContentProvider getContentProvider() {
- return new ArrayContentProvider();
- }
-
- @Override
- protected List<Brick> getAllEntities() {
- return bricks;
- }
-
- @Override
- protected ViewerComparator createViewerComparator() {
- return null;
- }
-} \ No newline at end of file
diff --git a/src/com.gluster.storage.management.console/src/com/gluster/storage/management/console/views/pages/DiskTreeContentProvider.java b/src/com.gluster.storage.management.console/src/com/gluster/storage/management/console/views/pages/DiskTreeContentProvider.java
deleted file mode 100644
index 79b54aa1..00000000
--- a/src/com.gluster.storage.management.console/src/com/gluster/storage/management/console/views/pages/DiskTreeContentProvider.java
+++ /dev/null
@@ -1,119 +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.console.views.pages;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.eclipse.jface.viewers.ITreeContentProvider;
-import org.eclipse.jface.viewers.Viewer;
-
-import com.gluster.storage.management.core.model.Disk;
-import com.gluster.storage.management.core.model.Partition;
-
-public class DiskTreeContentProvider implements ITreeContentProvider {
-
- private List<Disk> disks = new ArrayList<Disk>();
-
- public DiskTreeContentProvider(List<Disk> disks) {
- this.disks = disks;
- }
-
- /*
- * (non-Javadoc)
- *
- * @see org.eclipse.jface.viewers.IStructuredContentProvider#getElements(java.lang.Object)
- */
- public Object[] getElements(Object inputElement) {
- return ((List<Disk>) inputElement).toArray();
- }
-
- /*
- * (non-Javadoc)
- *
- * @see org.eclipse.jface.viewers.IContentProvider#dispose()
- */
- public void dispose() {
-
- }
-
- /*
- * (non-Javadoc)
- *
- * @see org.eclipse.jface.viewers.IContentProvider#inputChanged(org.eclipse.jface.viewers.Viewer,
- * java.lang.Object, java.lang.Object)
- */
- public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
-
- }
-
- /*
- * (non-Javadoc)
- *
- * @see org.eclipse.jface.viewers.ITreeContentProvider#getChildren(java.lang.Object)
- */
- public Object[] getChildren(Object parentElement) {
- if(parentElement instanceof Disk) {
- return ((Disk)parentElement).getPartitions().toArray();
- } else {
- return null;
- }
- }
-
- /*
- * (non-Javadoc)
- *
- * @see org.eclipse.jface.viewers.ITreeContentProvider#getParent(java.lang.Object)
- */
- public Object getParent(Object element) {
- if (element == null) {
- return null;
- }
-
- if(element instanceof Partition) {
- // find the disk of this partition and return
- return getDiskForPartition((Partition)element);
- } else {
- return null;
- }
- }
-
- private Disk getDiskForPartition(Partition partition) {
- for(Disk disk : disks) {
- for(Partition diskPartition : disk.getPartitions()) {
- if(partition.getName().equals(diskPartition.getName())) {
- return disk;
- }
- }
- }
- return null;
- }
-
- /*
- * (non-Javadoc)
- *
- * @see org.eclipse.jface.viewers.ITreeContentProvider#hasChildren(java.lang.Object)
- */
- public boolean hasChildren(Object element) {
- return (element instanceof Disk && ((Disk)element).getPartitions().size() > 0);
- }
-
-
-
-}
diff --git a/src/com.gluster.storage.management.console/src/com/gluster/storage/management/console/views/pages/DisksPage.java b/src/com.gluster.storage.management.console/src/com/gluster/storage/management/console/views/pages/DisksPage.java
deleted file mode 100644
index 8501bef3..00000000
--- a/src/com.gluster.storage.management.console/src/com/gluster/storage/management/console/views/pages/DisksPage.java
+++ /dev/null
@@ -1,70 +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.console.views.pages;
-
-import java.util.List;
-
-import org.eclipse.jface.viewers.IContentProvider;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.ui.IWorkbenchSite;
-
-import com.gluster.storage.management.console.DeviceTableLabelProvider;
-import com.gluster.storage.management.core.model.Disk;
-import com.gluster.storage.management.core.model.Entity;
-
-public class DisksPage extends AbstractDisksPage {
-
- public enum DISK_TABLE_COLUMN_INDICES {
- DISK, PARTITION, FREE_SPACE, TOTAL_SPACE, STATUS
- };
-
- private static final String[] DISK_TABLE_COLUMN_NAMES = new String[] { "Disk", "Partition", "Free Space (GB)",
- "Total Space (GB)", "Status" };
-
- public DisksPage(final Composite parent, int style, IWorkbenchSite site, List<Disk> disks) {
- super(parent, style, site, disks);
- }
-
- private String getDiskTableColumnDesc(DISK_TABLE_COLUMN_INDICES idx) {
- return DISK_TABLE_COLUMN_NAMES[idx.ordinal()];
- }
-
- @Override
- protected DeviceTableLabelProvider getLabelProvider() {
- return new DeviceTableLabelProvider();
- }
-
-
- @Override
- protected IContentProvider getContentProvider() {
- return new DiskTreeContentProvider(disks);
- }
-
- @Override
- protected int getStatusColumnIndex() {
- return DISK_TABLE_COLUMN_INDICES.STATUS.ordinal();
- }
-
- @Override
- public void entityChanged(Entity entity, String[] paremeters) {
- // TODO Auto-generated method stub
-
- }
-
-} \ No newline at end of file
diff --git a/src/com.gluster.storage.management.console/src/com/gluster/storage/management/console/views/pages/GlusterServersPage.java b/src/com.gluster.storage.management.console/src/com/gluster/storage/management/console/views/pages/GlusterServersPage.java
deleted file mode 100644
index 3ef05a2a..00000000
--- a/src/com.gluster.storage.management.console/src/com/gluster/storage/management/console/views/pages/GlusterServersPage.java
+++ /dev/null
@@ -1,138 +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.console.views.pages;
-
-import java.util.List;
-
-import org.eclipse.jface.layout.TableColumnLayout;
-import org.eclipse.jface.viewers.ColumnWeightData;
-import org.eclipse.jface.viewers.IBaseLabelProvider;
-import org.eclipse.jface.viewers.IContentProvider;
-import org.eclipse.jface.viewers.ViewerComparator;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Table;
-import org.eclipse.swt.widgets.TableColumn;
-import org.eclipse.ui.IWorkbenchSite;
-
-import com.gluster.storage.management.console.EntityGroupContentProvider;
-import com.gluster.storage.management.console.GlusterServerTableLabelProvider;
-import com.gluster.storage.management.console.utils.TableViewerComparator;
-import com.gluster.storage.management.core.constants.CoreConstants;
-import com.gluster.storage.management.core.model.ClusterListener;
-import com.gluster.storage.management.core.model.DefaultClusterListener;
-import com.gluster.storage.management.core.model.EntityGroup;
-import com.gluster.storage.management.core.model.Event;
-import com.gluster.storage.management.core.model.GlusterServer;
-
-public class GlusterServersPage extends AbstractTableViewerPage<GlusterServer> {
- private List<GlusterServer> glusterServers;
-
- public enum GLUSTER_SERVER_TABLE_COLUMN_INDICES {
- NAME, IP_ADDRESSES, NUM_OF_CPUS, TOTAL_MEMORY, TOTAL_FREE_SPACE, TOTAL_DISK_SPACE, STATUS // Removed PREFERRED_NETWORK
- };
-
- private static final String[] GLUSTER_SERVER_TABLE_COLUMN_NAMES = new String[] { "Name", "IP Address(es)",
- "Number" + CoreConstants.NEWLINE + "of CPUs", "Total" + CoreConstants.NEWLINE + "Memory (GB)",
- "Free Space (GB)", "Total " + CoreConstants.NEWLINE + " Space (GB)", "Status" }; // Removed "Preferred\nNetwork",
-
- public GlusterServersPage(IWorkbenchSite site, final Composite parent, int style, final EntityGroup<GlusterServer> servers) {
- super(site, parent, style, true, true, servers);
- this.glusterServers = servers.getEntities();
- }
-
- @Override
- protected ViewerComparator createViewerComparator() {
- return new TableViewerComparator();
- }
-
- @Override
- protected ClusterListener createClusterListener() {
- return new DefaultClusterListener() {
-
- @Override
- public void serverAdded(GlusterServer server) {
- tableViewer.add(server);
- parent.update();
- }
-
- @Override
- public void serverRemoved(GlusterServer server) {
- tableViewer.remove(server);
- parent.update();
- }
-
- @Override
- public void serverChanged(GlusterServer server, Event event) {
- tableViewer.update(server, null);
- parent.update();
- }
- };
- }
-
- @Override
- protected void setColumnProperties(Table table) {
- setColumnProperties(table, GLUSTER_SERVER_TABLE_COLUMN_INDICES.NAME, SWT.CENTER, 100);
- setColumnProperties(table, GLUSTER_SERVER_TABLE_COLUMN_INDICES.STATUS, SWT.CENTER, 70);
- // setColumnProperties(table, GLUSTER_SERVER_TABLE_COLUMN_INDICES.PREFERRED_NETWORK, SWT.CENTER, 90);
- setColumnProperties(table, GLUSTER_SERVER_TABLE_COLUMN_INDICES.NUM_OF_CPUS, SWT.CENTER, 90);
- //setColumnProperties(table, SERVER_DISK_TABLE_COLUMN_INDICES.CPU_USAGE, SWT.CENTER, 90);
- setColumnProperties(table, GLUSTER_SERVER_TABLE_COLUMN_INDICES.TOTAL_MEMORY, SWT.CENTER, 90);
- //setColumnProperties(table, SERVER_DISK_TABLE_COLUMN_INDICES.MEMORY_IN_USE, SWT.CENTER, 90);
- setColumnProperties(table, GLUSTER_SERVER_TABLE_COLUMN_INDICES.TOTAL_FREE_SPACE, SWT.CENTER, 90);
- setColumnProperties(table, GLUSTER_SERVER_TABLE_COLUMN_INDICES.TOTAL_DISK_SPACE, SWT.CENTER, 90);
- //setColumnProperties(table, SERVER_DISK_TABLE_COLUMN_INDICES.DISK_SPACE_IN_USE, SWT.CENTER, 90);
- }
-
- @Override
- protected IBaseLabelProvider getLabelProvider() {
- return new GlusterServerTableLabelProvider();
- }
-
- @Override
- protected IContentProvider getContentProvider() {
- return new EntityGroupContentProvider<GlusterServer>();
- }
-
- @Override
- protected String[] getColumnNames() {
- return GLUSTER_SERVER_TABLE_COLUMN_NAMES;
- }
-
- @Override
- protected List<GlusterServer> getAllEntities() {
- return glusterServers;
- }
-
- /**
- * 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, GLUSTER_SERVER_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));
- }
-}
diff --git a/src/com.gluster.storage.management.console/src/com/gluster/storage/management/console/views/pages/OptionKeyEditingSupport.java b/src/com.gluster.storage.management.console/src/com/gluster/storage/management/console/views/pages/OptionKeyEditingSupport.java
deleted file mode 100644
index ed6aea64..00000000
--- a/src/com.gluster.storage.management.console/src/com/gluster/storage/management/console/views/pages/OptionKeyEditingSupport.java
+++ /dev/null
@@ -1,120 +0,0 @@
-/**
- *
- */
-package com.gluster.storage.management.console.views.pages;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.eclipse.jface.viewers.CellEditor;
-import org.eclipse.jface.viewers.ColumnViewer;
-import org.eclipse.jface.viewers.ComboBoxCellEditor;
-import org.eclipse.jface.viewers.EditingSupport;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.widgets.Composite;
-
-import com.gluster.storage.management.console.GlusterDataModelManager;
-import com.gluster.storage.management.core.model.Volume;
-import com.gluster.storage.management.core.model.VolumeOption;
-import com.gluster.storage.management.core.model.VolumeOptionInfo;
-import com.gluster.storage.management.core.model.VolumeOptions;
-
-/**
- * Editing support for the "value" column in volume options table viewer.
- */
-public class OptionKeyEditingSupport extends EditingSupport {
- private CellEditor cellEditor;
- private Volume volume;
- private List<VolumeOptionInfo> defaults = GlusterDataModelManager.getInstance().getVolumeOptionsInfo();
- private String[] allowedKeys;
- private ColumnViewer viewer;
-
- public OptionKeyEditingSupport(ColumnViewer viewer, Volume volume) {
- super(viewer);
- this.volume = volume;
- this.viewer = viewer;
- }
-
- /**
- * @return array of option keys that are not already set on the volume
- */
- private String[] getAllowedKeys() {
- ArrayList<String> keys = new ArrayList<String>();
- VolumeOptions volumeOptions = volume.getOptions();
- for(VolumeOptionInfo optionInfo : defaults) {
- String optionName = optionInfo.getName();
- if(!volumeOptions.containsKey(optionName) || volumeOptions.get(optionName).isEmpty()) {
- // key not set => available for setting
- // value not set => this is the row being edited
- keys.add(optionName);
- }
- }
- return keys.toArray(new String[0]);
- }
-
- @Override
- protected void setValue(final Object element, final Object value) {
- VolumeOption oldEntry = (VolumeOption)element;
- Integer newValue = (Integer)value;
- String newKey = allowedKeys[newValue];
-
- if (((VolumeOption)element).getKey().equals(newKey)) {
- // selected value is same as old one.
- return;
- }
-
- // value has changed. set new value and refresh the viewer.
- volume.getOptions().remove(oldEntry.getKey());
- volume.setOption(newKey, "");
- getViewer().refresh();
- }
-
- @Override
- protected Object getValue(Object element) {
- VolumeOption entryBeingAdded = getEntryBeingAdded();
- if(entryBeingAdded == null) {
- return cellEditor.getValue();
- }
-
- if(entryBeingAdded.getKey().isEmpty()) {
- // editing just about to start. set first element as default.
- return 0;
- }
-
- return getIndexOfEntry(entryBeingAdded);
- }
-
- @Override
- protected CellEditor getCellEditor(Object element) {
- allowedKeys = getAllowedKeys();
- cellEditor = new ComboBoxCellEditor((Composite) viewer.getControl(), allowedKeys, SWT.READ_ONLY);
- return cellEditor;
- }
-
- private int getIndexOfEntry(VolumeOption entryBeingAdded) {
- for(int index = 0; index < allowedKeys.length; index++) {
- if(allowedKeys[index].equals(entryBeingAdded.getKey())) {
- return index;
- }
- }
- return -1;
- }
-
- protected VolumeOption getEntryBeingAdded() {
- List<VolumeOption> options = volume.getOptions().getOptions();
- int size = options.size();
- String lastValue = options.get(size - 1).getValue();
- if(lastValue == null || lastValue.isEmpty()) {
- // it's the LAST entry, and it's value is empty.
- // means this is a new row being added in the table viewer.
- return options.get(size - 1);
- }
- return null;
- }
-
- @Override
- protected boolean canEdit(Object element) {
- VolumeOption entry = (VolumeOption)element;
- return (entry.getKey().isEmpty() || entry.getValue().isEmpty());
- }
-}
diff --git a/src/com.gluster.storage.management.console/src/com/gluster/storage/management/console/views/pages/OptionValueEditingSupport.java b/src/com.gluster.storage.management.console/src/com/gluster/storage/management/console/views/pages/OptionValueEditingSupport.java
deleted file mode 100644
index faf4fbe6..00000000
--- a/src/com.gluster.storage.management.console/src/com/gluster/storage/management/console/views/pages/OptionValueEditingSupport.java
+++ /dev/null
@@ -1,110 +0,0 @@
-/**
- *
- */
-package com.gluster.storage.management.console.views.pages;
-
-import java.util.List;
-
-import org.eclipse.jface.dialogs.MessageDialog;
-import org.eclipse.jface.viewers.CellEditor;
-import org.eclipse.jface.viewers.ColumnViewer;
-import org.eclipse.jface.viewers.EditingSupport;
-import org.eclipse.jface.viewers.TextCellEditor;
-import org.eclipse.swt.custom.BusyIndicator;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Display;
-
-import com.gluster.storage.management.client.VolumesClient;
-import com.gluster.storage.management.console.GlusterDataModelManager;
-import com.gluster.storage.management.console.utils.GUIHelper;
-import com.gluster.storage.management.core.model.Volume;
-import com.gluster.storage.management.core.model.VolumeOption;
-import com.gluster.storage.management.core.model.VolumeOptionInfo;
-
-/**
- * Editing support for the "value" column in volume options table viewer.
- */
-public class OptionValueEditingSupport extends EditingSupport {
- private CellEditor cellEditor;
- private Volume volume;
- private List<VolumeOptionInfo> defaults = GlusterDataModelManager.getInstance().getVolumeOptionsInfo();
- private GUIHelper guiHelper = GUIHelper.getInstance();
-
- public OptionValueEditingSupport(ColumnViewer viewer, Volume volume) {
- super(viewer);
- this.volume = volume;
- this.cellEditor = new TextCellEditor((Composite) viewer.getControl());
- }
-
- @Override
- protected void setValue(final Object element, final Object value) {
- final VolumeOption entry = (VolumeOption)element;
- final String optionKey = entry.getKey();
- final String optionValue = (String)value;
- final String oldValue = entry.getValue();
-
- // It is not allowed to change value to empty string
- if(optionValue.isEmpty()) {
- MessageDialog.openError(Display.getDefault().getActiveShell(), "Set Volume Option",
- "Option value can't be empty! Please enter a valid value.");
- cellEditor.setFocus();
- return;
- }
-
- if (oldValue.equals(optionValue)) {
- // value is same as that present in the model. return without doing anything.
- return;
- }
-
- // value has changed. set volume option at back-end and update model accordingly
- guiHelper.setStatusMessage("Setting option [" + optionKey + " = " + optionValue + "]...");
- getViewer().getControl().update();
-
- BusyIndicator.showWhile(Display.getDefault(), new Runnable() {
-
- @Override
- public void run() {
- VolumesClient client = new VolumesClient();
- try {
- client.setVolumeOption(volume.getName(), optionKey, optionValue);
- GlusterDataModelManager.getInstance().setVolumeOption(volume, optionKey, optionValue);
- } catch(Exception e) {
- MessageDialog.openError(Display.getDefault().getActiveShell(), "Set Volume Option", e.getMessage());
- }
- getViewer().update(entry, null);
- }
- });
-
- guiHelper.clearStatusMessage();
- getViewer().getControl().update();
- }
-
- /**
- * @param key Key whose default value is to be fetched
- * @return Default value of the volume option with given key
- */
- private String getDefaultValue(String key) {
- for(VolumeOptionInfo optionInfo : defaults) {
- if(optionInfo.getName().equals(key)) {
- return optionInfo.getDefaultValue();
- }
- }
- return "";
- }
-
- @Override
- protected Object getValue(Object element) {
- VolumeOption entry = (VolumeOption) element;
- return entry.getValue().isEmpty() ? getDefaultValue(entry.getKey()) : entry.getValue();
- }
-
- @Override
- protected CellEditor getCellEditor(Object element) {
- return cellEditor;
- }
-
- @Override
- protected boolean canEdit(Object element) {
- return true;
- }
-}
diff --git a/src/com.gluster.storage.management.console/src/com/gluster/storage/management/console/views/pages/ServerDisksPage.java b/src/com.gluster.storage.management.console/src/com/gluster/storage/management/console/views/pages/ServerDisksPage.java
deleted file mode 100644
index a2982590..00000000
--- a/src/com.gluster.storage.management.console/src/com/gluster/storage/management/console/views/pages/ServerDisksPage.java
+++ /dev/null
@@ -1,66 +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.console.views.pages;
-
-import java.util.List;
-
-import org.eclipse.jface.viewers.IContentProvider;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.ui.IWorkbenchSite;
-
-import com.gluster.storage.management.console.ServerDiskTableLabelProvider;
-import com.gluster.storage.management.core.model.Disk;
-import com.gluster.storage.management.core.model.Entity;
-
-public class ServerDisksPage extends AbstractDisksPage {
-
- public ServerDisksPage(Composite parent, int style, IWorkbenchSite site, List<Disk> disks) {
- super(parent, style, site, disks);
- }
-
- public enum SERVER_DISK_TABLE_COLUMN_INDICES {
- DISK, PARTITION, FREE_SPACE, TOTAL_SPACE, STATUS
- };
-
- private static final String[] SERVER_DISK_TABLE_COLUMN_NAMES = new String[] { "Disk", "Partition", "Free Space (GB)",
- "Total Space (GB)", "Status" };
-
- @Override
- protected int getStatusColumnIndex() {
- return SERVER_DISK_TABLE_COLUMN_INDICES.STATUS.ordinal();
- }
-
- @Override
- protected ServerDiskTableLabelProvider getLabelProvider() {
- // return new DeviceTableLabelProvider();
- return new ServerDiskTableLabelProvider();
- }
-
-
- @Override
- protected IContentProvider getContentProvider() {
- return new DiskTreeContentProvider(disks);
- }
-
- @Override
- public void entityChanged(Entity entity, String[] paremeters) {
- // TODO Auto-generated method stub
-
- }
-}
diff --git a/src/com.gluster.storage.management.console/src/com/gluster/storage/management/console/views/pages/ServerLogsPage.java b/src/com.gluster.storage.management.console/src/com/gluster/storage/management/console/views/pages/ServerLogsPage.java
deleted file mode 100644
index 7b3f3946..00000000
--- a/src/com.gluster.storage.management.console/src/com/gluster/storage/management/console/views/pages/ServerLogsPage.java
+++ /dev/null
@@ -1,199 +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.console.views.pages;
-
-import org.eclipse.jface.viewers.ArrayContentProvider;
-import org.eclipse.jface.viewers.ListViewer;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.DisposeEvent;
-import org.eclipse.swt.events.DisposeListener;
-import org.eclipse.swt.events.VerifyEvent;
-import org.eclipse.swt.events.VerifyListener;
-import org.eclipse.swt.layout.FillLayout;
-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.Display;
-import org.eclipse.swt.widgets.Label;
-import org.eclipse.swt.widgets.Table;
-import org.eclipse.swt.widgets.Text;
-import org.eclipse.ui.forms.widgets.FormToolkit;
-
-import com.gluster.storage.management.console.utils.GUIHelper;
-import com.gluster.storage.management.core.model.GlusterServer;
-
-public class ServerLogsPage extends Composite {
-
- private final FormToolkit toolkit = new FormToolkit(Display.getCurrent());
- private final GUIHelper guiHelper = GUIHelper.getInstance();
- private Text text;
- private Table table;
-
- public enum LOG_TABLE_COLUMN_INDICES {
- DATE, TIME, DISK, SEVERITY, MESSAGE
- };
-
- private static final String[] LOG_TABLE_COLUMN_NAMES = new String[] { "Date", "Time", "Disk", "Severity", "Message" };
-
- /**
- * Create the composite.
- *
- * @param parent
- * @param style
- */
- public ServerLogsPage(Composite parent, int style, GlusterServer server) {
- super(parent, style);
- addDisposeListener(new DisposeListener() {
- public void widgetDisposed(DisposeEvent e) {
- toolkit.dispose();
- }
- });
- toolkit.adapt(this);
- toolkit.paintBordersFor(this);
-
- setLayout(new GridLayout(1, false));
- GridData layoutData = new GridData();
- layoutData.grabExcessHorizontalSpace = true;
- layoutData.grabExcessVerticalSpace = true;
- setLayoutData(layoutData);
-
- Composite composite = toolkit.createComposite(this, SWT.NONE);
- toolkit.paintBordersFor(composite);
-
- Label lblScanLast = toolkit.createLabel(composite, "Scan last", SWT.NONE);
- lblScanLast.setBounds(0, 15, 80, 20);
-
- text = toolkit.createText(composite, "100", SWT.NONE);
- text.setBounds(85, 15, 60, 20);
- text.setTextLimit(4);
- text.addVerifyListener(new VerifyListener() {
-
- @Override
- public void verifyText(VerifyEvent event) {
- // Assume we allow it
- event.doit = true;
-
- String text = event.text;
- char[] chars = text.toCharArray();
-
- // Don't allow if text contains non-digit characters
- for (int i = 0; i < chars.length; i++) {
- if (!Character.isDigit(chars[i])) {
- event.doit = false;
- break;
- }
- }
-
- }
- });
-
- Label lblMessagesAndFilter = toolkit.createLabel(composite, " messages from ", SWT.CENTER);
- lblMessagesAndFilter.setBounds(160, 15, 110, 20);
-
- Combo combo = new Combo(composite, SWT.CENTER);
- combo.setBounds(295, 15, 100, 20);
- combo.setItems(new String[] { "syslog", "dmesg" });
- toolkit.adapt(combo);
- toolkit.paintBordersFor(combo);
- combo.select(0);
-
- Button btngo = toolkit.createButton(composite, "&Go", SWT.NONE);
- btngo.setBounds(410, 13, 50, 30);
-
- Label separator = toolkit.createLabel(composite, "", SWT.SEPARATOR | SWT.HORIZONTAL | SWT.FILL);
- separator.setBounds(0, 50, 500, 2);
-
- Label lblFilterString = toolkit.createLabel(composite, "Filter String", SWT.LEFT);
- lblFilterString.setBounds(0, 65, 100, 20);
-
- text = guiHelper.createFilterText(toolkit, composite);
- text.setBounds(105, 65, 250, 20);
-
- Composite logContentsComposite = createLogContentsComposite(toolkit);
- // Text logContentsText = toolkit.createText(logContentsComposite, "", SWT.MULTI | SWT.FLAT | SWT.BORDER);
- // logContentsText.setEditable(false);
- // populateDummyLogContent(logContentsText);
-
- ListViewer logViewer = new ListViewer(logContentsComposite, SWT.BORDER | SWT.V_SCROLL | SWT.NO);
- logViewer.setContentProvider(new ArrayContentProvider());
- guiHelper.createFilter(logViewer, text, false);
- logViewer.setInput(getDummyLogContents());
-
- // TODO: Link the filter string with the contents text
- }
-
- private Composite createLogContentsComposite(FormToolkit toolkit) {
- Composite tableViewerComposite = toolkit.createComposite(this, SWT.NONE);
- tableViewerComposite.setLayout(new FillLayout(SWT.HORIZONTAL));
- GridData layoutData = new GridData(SWT.FILL, SWT.FILL, true, true);
- layoutData.verticalIndent = 10;
- tableViewerComposite.setLayoutData(layoutData);
- return tableViewerComposite;
- }
-
- private String[] getDummyLogContents() {
-
- String[] logMessages = {
- "Jan 19 13:43:08 shireesh-laptop dhclient: last message repeated 6 times",
- "Jan 19 13:44:08 shireesh-laptop dhclient: last message repeated 5 times",
- "Jan 19 13:44:47 shireesh-laptop dhclient: last message repeated 2 times",
- "Jan 19 13:44:47 shireesh-laptop dhclient: DHCPREQUEST of 192.168.1.174 on eth1 to 255.255.255.255 port 67",
- "Jan 19 13:45:49 shireesh-laptop dhclient: last message repeated 6 times",
- "Jan 19 13:46:59 shireesh-laptop dhclient: last message repeated 6 times",
- "Jan 19 13:48:01 shireesh-laptop dhclient: last message repeated 4 times",
- "Jan 19 13:49:02 shireesh-laptop dhclient: last message repeated 5 times",
- "Jan 19 13:50:08 shireesh-laptop dhclient: last message repeated 4 times",
- "Jan 19 13:51:08 shireesh-laptop dhclient: last message repeated 6 times",
- "Jan 19 13:52:08 shireesh-laptop dhclient: last message repeated 4 times",
- "Jan 19 13:53:08 shireesh-laptop dhclient: last message repeated 6 times",
- "Jan 19 13:54:08 shireesh-laptop dhclient: last message repeated 5 times",
- "Jan 19 13:55:08 shireesh-laptop dhclient: last message repeated 4 times",
- "Jan 19 13:56:08 shireesh-laptop dhclient: last message repeated 4 times",
- "Jan 19 13:57:08 shireesh-laptop dhclient: last message repeated 3 times",
- "Jan 19 13:58:08 shireesh-laptop dhclient: last message repeated 6 times",
- "Jan 19 13:59:08 shireesh-laptop dhclient: last message repeated 4 times",
- "Jan 19 13:59:40 shireesh-laptop dhclient: last message repeated 3 times",
- "Jan 19 13:59:40 shireesh-laptop NetworkManager: <info> DHCP: device eth1 state changed bound -> expire",
- "Jan 19 13:59:40 shireesh-laptop dhclient: DHCPDISCOVER on eth1 to 255.255.255.255 port 67 interval 8",
- "Jan 19 13:59:40 shireesh-laptop NetworkManager: <info> DHCP: device eth1 state changed expire -> preinit",
- "Jan 19 13:59:40 shireesh-laptop dhclient: DHCPOFFER of 192.168.1.174 from 192.168.1.1",
- "Jan 19 13:59:40 shireesh-laptop dhclient: DHCPREQUEST of 192.168.1.174 on eth1 to 255.255.255.255 port 67",
- "Jan 19 13:59:40 shireesh-laptop dhclient: DHCPACK of 192.168.1.174 from 192.168.1.1",
- "Jan 19 13:59:40 shireesh-laptop dhclient: bound to 192.168.1.174 -- renewal in 3205 seconds.",
- "Jan 19 13:59:40 shireesh-laptop NetworkManager: <info> DHCP: device eth1 state changed preinit -> bound",
- "Jan 19 13:59:40 shireesh-laptop NetworkManager: <info> address 192.168.1.174",
- "Jan 19 13:59:40 shireesh-laptop NetworkManager: <info> prefix 24 (255.255.255.0)",
- "Jan 19 13:59:40 shireesh-laptop NetworkManager: <info> gateway 192.168.1.1",
- "Jan 19 13:59:40 shireesh-laptop NetworkManager: <info> nameserver '192.168.1.1'",
- "Jan 19 13:59:40 shireesh-laptop NetworkManager: <info> domain name 'in.gluster.com'",
- "Jan 19 14:03:53 shireesh-laptop avahi-daemon[1098]: Invalid legacy unicast query packet.",
- "Jan 19 14:03:53 shireesh-laptop avahi-daemon[1098]: Received response from host 192.168.1.155 with invalid source port 37219 on interface 'eth0.0'",
- "Jan 19 14:03:54 shireesh-laptop avahi-daemon[1098]: Invalid legacy unicast query packet.",
- "Jan 19 14:03:54 shireesh-laptop avahi-daemon[1098]: Invalid legacy unicast query packet.",
- "Jan 19 14:03:54 shireesh-laptop avahi-daemon[1098]: Received response from host 192.168.1.155 with invalid source port 37219 on interface 'eth0.0'",
- "Jan 19 14:05:09 shireesh-laptop avahi-daemon[1098]: last message repeated 8 times",
- "Jan 19 14:12:48 shireesh-laptop NetworkManager: <debug> [1295426568.002642] periodic_update(): Roamed from BSSID E0:CB:4E:C0:0B:7F (glfs) to (none) ((none))",
- "Jan 19 14:12:54 shireesh-laptop NetworkManager: <debug> [1295426574.002448] periodic_update(): Roamed from BSSID (none) ((none)) to E0:CB:4E:C0:0B:7F (glfs)",
- "Jan 19 14:17:01 shireesh-laptop CRON[5321]: (root) CMD ( cd / && run-parts --report /etc/cron.hourly)" };
-
- return logMessages;
- }
-}
diff --git a/src/com.gluster.storage.management.console/src/com/gluster/storage/management/console/views/pages/ServersPage.java b/src/com.gluster.storage.management.console/src/com/gluster/storage/management/console/views/pages/ServersPage.java
deleted file mode 100644
index d97827c6..00000000
--- a/src/com.gluster.storage.management.console/src/com/gluster/storage/management/console/views/pages/ServersPage.java
+++ /dev/null
@@ -1,138 +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.console.views.pages;
-
-import java.util.List;
-
-import org.eclipse.jface.layout.TableColumnLayout;
-import org.eclipse.jface.viewers.ColumnWeightData;
-import org.eclipse.jface.viewers.IBaseLabelProvider;
-import org.eclipse.jface.viewers.IContentProvider;
-import org.eclipse.jface.viewers.ViewerComparator;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Table;
-import org.eclipse.swt.widgets.TableColumn;
-import org.eclipse.ui.IWorkbenchSite;
-
-import com.gluster.storage.management.console.EntityGroupContentProvider;
-import com.gluster.storage.management.console.ServerTableLabelProvider;
-import com.gluster.storage.management.core.model.ClusterListener;
-import com.gluster.storage.management.core.model.DefaultClusterListener;
-import com.gluster.storage.management.core.model.EntityGroup;
-import com.gluster.storage.management.core.model.Event;
-import com.gluster.storage.management.core.model.Server;
-
-public class ServersPage extends AbstractTableViewerPage<Server> {
- private List<Server> servers;
-
- public enum SERVER_TABLE_COLUMN_INDICES {
- NAME, IP_ADDRESSES, NUM_OF_DISKS, TOTAL_DISK_SPACE
- };
-
- private static final String[] SERVER_TABLE_COLUMN_NAMES = new String[] { "Name", "IP Address(es)", "Number of Disks", "Total Disk Space (GB)" };
-
- public ServersPage(final Composite parent, IWorkbenchSite site, EntityGroup<Server> serversGroup) {
- super(site, parent, SWT.NONE, true, true, serversGroup);
- this.servers = serversGroup.getEntities();
- }
-
- @Override
- protected ClusterListener createClusterListener() {
- return new DefaultClusterListener() {
- @Override
- public void discoveredServerRemoved(Server server) {
- tableViewer.remove(server);
- parent.update();
- }
-
- @Override
- public void discoveredServerAdded(Server server) {
- tableViewer.add(server);
- parent.update();
- }
-
- @Override
- public void discoveredServerChanged(Server server, Event event) {
- tableViewer.update(server, null);
- parent.update();
- }
- };
- }
-
- public void setInput(EntityGroup<Server> servers) {
- tableViewer.setInput(servers);
- tableViewer.refresh();
- }
-
- @Override
- protected void setColumnProperties(Table table) {
- setColumnProperties(table, SERVER_TABLE_COLUMN_INDICES.NAME, SWT.CENTER, 70);
- setColumnProperties(table, SERVER_TABLE_COLUMN_INDICES.IP_ADDRESSES, SWT.CENTER, 100);
- setColumnProperties(table, SERVER_TABLE_COLUMN_INDICES.NUM_OF_DISKS, SWT.CENTER, 70);
- setColumnProperties(table, SERVER_TABLE_COLUMN_INDICES.TOTAL_DISK_SPACE, SWT.CENTER, 70);
- // setColumnProperties(table, SERVER_DISK_TABLE_COLUMN_INDICES.NUM_OF_CPUS, SWT.CENTER, 90);
- // setColumnProperties(table, SERVER_DISK_TABLE_COLUMN_INDICES.CPU_USAGE, SWT.CENTER, 90);
- // setColumnProperties(table, SERVER_DISK_TABLE_COLUMN_INDICES.TOTAL_MEMORY, SWT.CENTER, 90);
- // setColumnProperties(table, SERVER_DISK_TABLE_COLUMN_INDICES.MEMORY_IN_USE, SWT.CENTER, 90);
- // setColumnProperties(table, SERVER_DISK_TABLE_COLUMN_INDICES.DISK_SPACE_IN_USE, SWT.CENTER, 90);
- }
-
- @Override
- protected String[] getColumnNames() {
- return SERVER_TABLE_COLUMN_NAMES;
- }
-
- @Override
- protected IBaseLabelProvider getLabelProvider() {
- return new ServerTableLabelProvider();
- }
-
- @Override
- protected IContentProvider getContentProvider() {
- return new EntityGroupContentProvider<Server>();
- }
-
- @Override
- protected List<Server> getAllEntities() {
- return servers;
- }
-
- /**
- * Sets properties for alignment and weight of given column of given table
- *
- * @param table
- * @param columnIndex
- * @param alignment
- * @param weight
- */
- private void setColumnProperties(Table table, SERVER_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));
- }
-
- @Override
- protected ViewerComparator createViewerComparator() {
- // TODO Auto-generated method stub
- return null;
- }
-}
diff --git a/src/com.gluster.storage.management.console/src/com/gluster/storage/management/console/views/pages/TasksPage.java b/src/com.gluster.storage.management.console/src/com/gluster/storage/management/console/views/pages/TasksPage.java
deleted file mode 100644
index c166af0f..00000000
--- a/src/com.gluster.storage.management.console/src/com/gluster/storage/management/console/views/pages/TasksPage.java
+++ /dev/null
@@ -1,151 +0,0 @@
-/**
- * TasksPage.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.console.views.pages;
-
-import java.util.List;
-
-import org.eclipse.jface.viewers.ArrayContentProvider;
-import org.eclipse.jface.viewers.IBaseLabelProvider;
-import org.eclipse.jface.viewers.IContentProvider;
-import org.eclipse.jface.viewers.ISelection;
-import org.eclipse.jface.viewers.StructuredSelection;
-import org.eclipse.jface.viewers.ViewerComparator;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Table;
-import org.eclipse.ui.IWorkbenchPart;
-import org.eclipse.ui.IWorkbenchSite;
-
-import com.gluster.storage.management.console.TasksTableLabelProvider;
-import com.gluster.storage.management.console.toolbar.GlusterToolbarManager;
-import com.gluster.storage.management.core.model.ClusterListener;
-import com.gluster.storage.management.core.model.DefaultClusterListener;
-import com.gluster.storage.management.core.model.Entity;
-import com.gluster.storage.management.core.model.TaskInfo;
-
-public class TasksPage extends AbstractTableViewerPage<TaskInfo> {
- private List<TaskInfo> taskInfoList;
- private TaskInfo selectedTask;
-
- public enum TASK_TABLE_COLUMN_INDICES {
- TASK, STATUS
- };
-
- private static final String[] TASK_TABLE_COLUMN_NAMES = new String[] { "Task", "Status"};
-
-
- public TasksPage(IWorkbenchSite site, Composite parent, int style, List<TaskInfo> taskInfo) {
- super(site, parent, style, false, false, taskInfo);
- this.taskInfoList = taskInfo;
- }
-
- /* (non-Javadoc)
- * @see com.gluster.storage.management.console.views.pages.AbstractTableViewerPage#createClusterListener()
- */
- @Override
- protected ClusterListener createClusterListener() {
- return new DefaultClusterListener() {
- @Override
- public void taskAdded(TaskInfo taskInfo) {
- tableViewer.add(taskInfo);
- parent.update();
- }
-
- @Override
- public void taskRemoved(TaskInfo taskInfo) {
- tableViewer.remove(taskInfo);
- parent.update();
- // hide the task related actionset as no task is selected
- // site.getPage().hideActionSet(ActionConstants.ACTION_SET_TASK);
- }
-
- @Override
- public void taskUpdated(TaskInfo taskInfo) {
- tableViewer.update(taskInfo, null);
- parent.update();
- // fire selection event so that toolbar gets updated
- // (the action class listens to selection and enables/disables automatically)
- tableViewer.setSelection(new StructuredSelection(taskInfo));
- }
- };
- }
-
- /* (non-Javadoc)
- * @see com.gluster.storage.management.console.views.pages.AbstractTableViewerPage#getColumnNames()
- */
- @Override
- protected String[] getColumnNames() {
- return TASK_TABLE_COLUMN_NAMES;
- }
-
- /* (non-Javadoc)
- * @see com.gluster.storage.management.console.views.pages.AbstractTableViewerPage#setColumnProperties(org.eclipse.swt.widgets.Table)
- */
- @Override
- protected void setColumnProperties(Table table) {
- guiHelper.setColumnProperties(table, TASK_TABLE_COLUMN_INDICES.TASK.ordinal(), SWT.LEFT, 50);
- guiHelper.setColumnProperties(table, TASK_TABLE_COLUMN_INDICES.STATUS.ordinal(), SWT.LEFT, 50);
- }
-
- /* (non-Javadoc)
- * @see com.gluster.storage.management.console.views.pages.AbstractTableViewerPage#getLabelProvider()
- */
- @Override
- protected IBaseLabelProvider getLabelProvider() {
- return new TasksTableLabelProvider();
- }
-
- /* (non-Javadoc)
- * @see com.gluster.storage.management.console.views.pages.AbstractTableViewerPage#getContentProvider()
- */
- @Override
- protected IContentProvider getContentProvider() {
- return new ArrayContentProvider();
- }
-
- /* (non-Javadoc)
- * @see com.gluster.storage.management.console.views.pages.AbstractTableViewerPage#getAllEntities()
- */
- @Override
- protected List<TaskInfo> getAllEntities() {
- return taskInfoList;
- }
-
- /* (non-Javadoc)
- * @see com.gluster.storage.management.console.views.pages.AbstractTableViewerPage#selectionChanged(org.eclipse.ui.IWorkbenchPart, org.eclipse.jface.viewers.ISelection)
- */
- @Override
- public void selectionChanged(IWorkbenchPart part, ISelection selection) {
- if (selection instanceof StructuredSelection) {
- Entity selectedEntity = (Entity) ((StructuredSelection) selection).getFirstElement();
- if (selectedEntity != null && selectedEntity instanceof TaskInfo && selectedEntity != selectedTask) {
- selectedTask = (TaskInfo)selectedEntity;
- new GlusterToolbarManager(part.getSite().getWorkbenchWindow()).updateToolbar(selectedTask);
- }
- }
- }
-
- @Override
- protected ViewerComparator createViewerComparator() {
- // TODO Auto-generated method stub
- return null;
- }
-}
diff --git a/src/com.gluster.storage.management.console/src/com/gluster/storage/management/console/views/pages/VolumeLogsPage.java b/src/com.gluster.storage.management.console/src/com/gluster/storage/management/console/views/pages/VolumeLogsPage.java
deleted file mode 100644
index 162160f8..00000000
--- a/src/com.gluster.storage.management.console/src/com/gluster/storage/management/console/views/pages/VolumeLogsPage.java
+++ /dev/null
@@ -1,431 +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.console.views.pages;
-
-import java.util.Calendar;
-import java.util.Date;
-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.IDoubleClickListener;
-import org.eclipse.jface.viewers.TableViewer;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.DisposeEvent;
-import org.eclipse.swt.events.DisposeListener;
-import org.eclipse.swt.events.SelectionAdapter;
-import org.eclipse.swt.events.SelectionEvent;
-import org.eclipse.swt.events.VerifyEvent;
-import org.eclipse.swt.events.VerifyListener;
-import org.eclipse.swt.layout.FillLayout;
-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.DateTime;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.swt.widgets.Label;
-import org.eclipse.swt.widgets.Table;
-import org.eclipse.swt.widgets.TableColumn;
-import org.eclipse.swt.widgets.Text;
-import org.eclipse.ui.forms.widgets.FormToolkit;
-
-import com.gluster.storage.management.client.VolumesClient;
-import com.gluster.storage.management.console.VolumeLogTableLabelProvider;
-import com.gluster.storage.management.console.utils.GUIHelper;
-import com.gluster.storage.management.core.constants.CoreConstants;
-import com.gluster.storage.management.core.constants.GlusterConstants;
-import com.gluster.storage.management.core.constants.GlusterConstants.VOLUME_LOG_LEVELS;
-import com.gluster.storage.management.core.model.Volume;
-import com.gluster.storage.management.core.model.VolumeLogMessage;
-
-public class VolumeLogsPage extends Composite {
-
- private final FormToolkit toolkit = new FormToolkit(Display.getCurrent());
- private final GUIHelper guiHelper = GUIHelper.getInstance();
- private Text filterText;
- private Text lineCountText;
- private Volume volume;
-
- public enum LOG_TABLE_COLUMN_INDICES {
- DATE, TIME, BRICK, SEVERITY, MESSAGE
- };
-
- private static final String[] LOG_TABLE_COLUMN_NAMES = new String[] { "Date", "Time", "Brick", "Severity", "Message" };
- private TableViewer tableViewer;
- private Combo bricksCombo;
- private Combo severityCombo;
- private DateTime fromDate;
- private DateTime fromTime;
- private DateTime toDate;
- private DateTime toTime;
- private Button fromCheckbox;
- private Button toCheckbox;
-
- /**
- * Create the volume logs page
- *
- * @param parent
- * @param style
- * @param volume
- * Volume for which the logs page is to be created
- */
- public VolumeLogsPage(Composite parent, int style, Volume volume) {
- super(parent, style);
- this.volume = volume;
-
- addDisposeListener(new DisposeListener() {
- public void widgetDisposed(DisposeEvent e) {
- toolkit.dispose();
- }
- });
- toolkit.adapt(this);
- toolkit.paintBordersFor(this);
-
- configureLayout();
-
- Composite composite = toolkit.createComposite(this, SWT.NONE);
- toolkit.paintBordersFor(composite);
-
- createLineCountLabel(composite);
- createLineCountText(composite);
-
- createBricksLabel(composite);
- createBricksCombo(composite);
-
- createSeverityLabel(composite);
- createSeverityCombo(composite);
-
- createFromDateLabel(composite);
- createFromDateField(composite);
- createFromTimeField(composite);
- createFromCheckbox(composite);
-
- createToDateLabel(composite);
- createToDateField(composite);
- createToTimeField(composite);
- createToCheckbox(composite);
-
- createSearchButton(composite);
-
- createSeparator(composite);
-
- createFilterLabel(composite);
- createFilterText(composite);
-
- createLogTableViewer();
- }
-
- private void createLogTableViewer() {
- Composite tableViewerComposite = createTableViewerComposite();
-
- tableViewer = new TableViewer(tableViewerComposite, SWT.FLAT | SWT.FULL_SELECTION | SWT.MULTI);
- tableViewer.setLabelProvider(new VolumeLogTableLabelProvider());
- tableViewer.setContentProvider(new ArrayContentProvider());
-
- setupLogsTable(tableViewerComposite, tableViewer.getTable());
- guiHelper.createFilter(tableViewer, filterText, false);
- }
-
- private void createFilterText(Composite composite) {
- filterText = guiHelper.createFilterText(toolkit, composite);
- filterText.setBounds(90, 105, 250, 20);
- }
-
- private void createFilterLabel(Composite composite) {
- Label lblFilterString = toolkit.createLabel(composite, "Filter String", SWT.LEFT);
- lblFilterString.setBounds(0, 105, 85, 20);
- }
-
- private void createSeparator(Composite composite) {
- Label separator = toolkit.createLabel(composite, "", SWT.SEPARATOR | SWT.HORIZONTAL | SWT.FILL);
- separator.setBounds(0, 95, 680, 2);
- }
-
- private void createSearchButton(Composite composite) {
- Button btnGo = toolkit.createButton(composite, "&Fetch Logs", SWT.NONE);
- btnGo.setBounds (615, 55, 75, 30);
- btnGo.addSelectionListener(new SelectionAdapter() {
- @Override
- public void widgetSelected(SelectionEvent e) {
- VolumesClient client = new VolumesClient();
-
- Date fromTimestamp = null;
- Date toTimestamp = null;
-
- if (fromCheckbox.getSelection()) {
- fromTimestamp = extractTimestamp(fromDate, fromTime);
- }
-
- if (toCheckbox.getSelection()) {
- toTimestamp = extractTimestamp(toDate, toTime);
- }
-
- if (!validateTimeRange(fromTimestamp, toTimestamp)) {
- return;
- }
-
- try {
- List<VolumeLogMessage> logMessages = client.getLogs(volume.getName(), bricksCombo.getText(),
- severityCombo.getText(), fromTimestamp, toTimestamp,
- Integer.parseInt(lineCountText.getText()));
- tableViewer.setInput(logMessages.toArray(new VolumeLogMessage[0]));
- tableViewer.refresh();
- } catch (Exception ex) {
- MessageDialog.openError(getShell(), "Volume Logs",
- "Error while fetching volume logs: [" + ex.getMessage() + "]");
- }
- }
- });
- }
-
- protected boolean validateTimeRange(Date fromTimestamp, Date toTimestamp) {
- if (fromTimestamp == null && toTimestamp == null) {
- // no time range selected. nothing to validate.
- return true;
- }
-
- Calendar calendar = Calendar.getInstance();
- Date now = calendar.getTime();
- if (fromTimestamp != null && fromTimestamp.after(now)) {
- MessageDialog.openError(getShell(), "Volume Logs", "From time can't be greater than current time!");
- return false;
- }
-
- if (toTimestamp != null) {
- if (toTimestamp.after(now)) {
- MessageDialog.openError(getShell(), "Volume Logs", "To time can't be greater than current time!");
- return false;
- }
-
- if (fromTimestamp.after(toTimestamp)) {
- MessageDialog.openError(getShell(), "Volume Logs", "From time can't be greater than To time!");
- return false;
- }
- }
-
- return true;
- }
-
- private void createToCheckbox(Composite composite) {
- toCheckbox = toolkit.createButton(composite, null, SWT.CHECK);
- toCheckbox.setBounds(320, 60, 15, 20);
- toCheckbox.addSelectionListener(new SelectionAdapter() {
- @Override
- public void widgetSelected(SelectionEvent e) {
- if (toCheckbox.getSelection()) {
- toDate.setEnabled(true);
- toTime.setEnabled(true);
- } else {
- toDate.setEnabled(false);
- toTime.setEnabled(false);
- }
- }
- });
- }
-
- private void createToTimeField(Composite composite) {
- toTime = new DateTime(composite, SWT.BORDER | SWT.TIME);
- toTime.setBounds(490, 60, 120, 20);
- toTime.setEnabled(false);
- toolkit.adapt(toTime);
- toolkit.paintBordersFor(toTime);
- }
-
- private void createToDateField(Composite composite) {
- toDate = new DateTime(composite, SWT.BORDER | SWT.DROP_DOWN);
- toDate.setBounds(365, 60, 120, 20);
- toDate.setEnabled(false);
- toolkit.adapt(toDate);
- toolkit.paintBordersFor(toDate);
- }
-
- private void createToDateLabel(Composite composite) {
- Label lblTo = toolkit.createLabel(composite, "To", SWT.NONE);
- lblTo.setBounds(340, 60, 25, 20);
- }
-
- private void createFromCheckbox(Composite composite) {
- fromCheckbox = toolkit.createButton(composite, null, SWT.CHECK);
- fromCheckbox.setBounds(0, 60, 15, 20);
- fromCheckbox.addSelectionListener(new SelectionAdapter() {
- @Override
- public void widgetSelected(SelectionEvent e) {
- if (fromCheckbox.getSelection()) {
- fromDate.setEnabled(true);
- fromTime.setEnabled(true);
- } else {
- fromDate.setEnabled(false);
- fromTime.setEnabled(false);
- }
- }
- });
- }
-
- private void createFromTimeField(Composite composite) {
- fromTime = new DateTime(composite, SWT.BORDER | SWT.TIME);
- fromTime.setBounds(190, 60, 120, 20);
- fromTime.setEnabled(false);
- toolkit.adapt(fromTime);
- toolkit.paintBordersFor(fromTime);
- }
-
- private void createFromDateField(Composite composite) {
- fromDate = new DateTime(composite, SWT.BORDER | SWT.DROP_DOWN);
- fromDate.setBounds(60, 60, 120, 20);
- fromDate.setEnabled(false);
- toolkit.adapt(fromDate);
- toolkit.paintBordersFor(fromDate);
- }
-
- private void createFromDateLabel(Composite composite) {
- Label lblFrom = toolkit.createLabel(composite, "from", SWT.NONE);
- lblFrom.setBounds(20, 60, 40, 20);
- }
-
- private void createSeverityCombo(Composite composite) {
- severityCombo = new Combo(composite, SWT.READ_ONLY);
- severityCombo.setBounds(555, 15, 110, 20);
-
- severityCombo.setItems(GlusterConstants.VOLUME_LOG_LEVELS_ARR.toArray(new String[0]));
- severityCombo.select(VOLUME_LOG_LEVELS.ERROR.ordinal());
- severityCombo.add(CoreConstants.ALL, 0);
-
- toolkit.adapt(severityCombo);
- toolkit.paintBordersFor(severityCombo);
- }
-
- private void createSeverityLabel(Composite composite) {
- Label lblSeverity = toolkit.createLabel(composite, "Severity", SWT.NONE);
- lblSeverity.setBounds(480, 15, 70, 20);
- }
-
- private void createBricksCombo(Composite composite) {
- bricksCombo = new Combo(composite, SWT.READ_ONLY);
- bricksCombo.setBounds(365, 15, 100, 20);
- bricksCombo.setItems( volume.getBrickDirectories().toArray(new String[0]));
- bricksCombo.add(CoreConstants.ALL, 0);
- toolkit.adapt(bricksCombo);
- toolkit.paintBordersFor(bricksCombo);
- bricksCombo.select(0);
- }
-
- private void createBricksLabel(Composite composite) {
- Label lblMessagesAndFilter = toolkit.createLabel(composite, "messages, and filter on bricks", SWT.NONE);
- lblMessagesAndFilter.setBounds(160, 15, 200, 20);
- }
-
- private void createLineCountText(Composite composite) {
- lineCountText = toolkit.createText(composite, "100", SWT.NONE);
- lineCountText.setBounds(85, 15, 60, 20);
- lineCountText.setTextLimit(4);
- lineCountText.addVerifyListener(new VerifyListener() {
-
- @Override
- public void verifyText(VerifyEvent event) {
- // Assume we allow it
- event.doit = true;
-
- String text = event.text;
- char[] chars = text.toCharArray();
-
- // Don't allow if text contains non-digit characters
- for (int i = 0; i < chars.length; i++) {
- if (!Character.isDigit(chars[i])) {
- event.doit = false;
- break;
- }
- }
- }
- });
- }
-
- private void createLineCountLabel(Composite composite) {
- Label lblScanLast = toolkit.createLabel(composite, "Scan last", SWT.NONE);
- lblScanLast.setBounds(0, 15, 80, 20);
- }
-
- private void configureLayout() {
- setLayout(new GridLayout(1, false));
- GridData layoutData = new GridData();
- layoutData.grabExcessHorizontalSpace = true;
- layoutData.grabExcessVerticalSpace = true;
- // layoutData.verticalIndent = 10;
- setLayoutData(layoutData);
- }
-
- private Composite createTableViewerComposite() {
- Composite tableViewerComposite = new Composite(this, SWT.NO);
- tableViewerComposite.setLayout(new FillLayout(SWT.HORIZONTAL));
- GridData layoutData = new GridData(SWT.FILL, SWT.FILL, true, true);
- layoutData.verticalIndent = 10;
- tableViewerComposite.setLayoutData(layoutData);
- return tableViewerComposite;
- }
-
- private void setupLogsTable(Composite parent, Table table) {
- table.setHeaderVisible(true);
- table.setLinesVisible(false);
-
- TableColumnLayout tableColumnLayout = guiHelper.createTableColumnLayout(table, LOG_TABLE_COLUMN_NAMES);
- parent.setLayout(tableColumnLayout);
-
- setColumnProperties(table, LOG_TABLE_COLUMN_INDICES.DATE, SWT.CENTER, 50);
- setColumnProperties(table, LOG_TABLE_COLUMN_INDICES.TIME, SWT.CENTER, 50);
- setColumnProperties(table, LOG_TABLE_COLUMN_INDICES.BRICK, SWT.CENTER, 50);
- setColumnProperties(table, LOG_TABLE_COLUMN_INDICES.SEVERITY, SWT.CENTER, 50);
- setColumnProperties(table, LOG_TABLE_COLUMN_INDICES.MESSAGE, SWT.LEFT, 100);
- }
-
- /**
- * Sets properties for alignment and weight of given column of given table
- *
- * @param table
- * @param columnIndex
- * @param alignment
- * @param weight
- */
- private void setColumnProperties(Table table, LOG_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 Date extractTimestamp(DateTime date, DateTime time) {
- Calendar calendar = Calendar.getInstance();
- calendar.setLenient(false);
- calendar.set(Calendar.DAY_OF_MONTH, date.getDay());
- // in Calendar class, month starts with zero i.e. Jan = 0
- calendar.set(Calendar.MONTH, date.getMonth());
- calendar.set(Calendar.YEAR, date.getYear());
- calendar.set(Calendar.HOUR_OF_DAY, time.getHours());
- calendar.set(Calendar.MINUTE, time.getMinutes());
- calendar.set(Calendar.SECOND, time.getSeconds());
- return calendar.getTime();
- }
-
- public void addDoubleClickListener(IDoubleClickListener listener) {
- tableViewer.addDoubleClickListener(listener);
- }
-}
diff --git a/src/com.gluster.storage.management.console/src/com/gluster/storage/management/console/views/pages/VolumeOptionsPage.java b/src/com.gluster.storage.management.console/src/com/gluster/storage/management/console/views/pages/VolumeOptionsPage.java
deleted file mode 100644
index dd02a672..00000000
--- a/src/com.gluster.storage.management.console/src/com/gluster/storage/management/console/views/pages/VolumeOptionsPage.java
+++ /dev/null
@@ -1,360 +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.console.views.pages;
-
-import java.util.List;
-
-import org.apache.commons.lang.WordUtils;
-import org.eclipse.jface.layout.TableColumnLayout;
-import org.eclipse.jface.viewers.ColumnLabelProvider;
-import org.eclipse.jface.viewers.ColumnLayoutData;
-import org.eclipse.jface.viewers.ColumnViewerToolTipSupport;
-import org.eclipse.jface.viewers.ColumnWeightData;
-import org.eclipse.jface.viewers.StructuredSelection;
-import org.eclipse.jface.viewers.TableViewer;
-import org.eclipse.jface.viewers.TableViewerColumn;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.DisposeEvent;
-import org.eclipse.swt.events.DisposeListener;
-import org.eclipse.swt.events.ModifyEvent;
-import org.eclipse.swt.events.ModifyListener;
-import org.eclipse.swt.events.PaintEvent;
-import org.eclipse.swt.events.PaintListener;
-import org.eclipse.swt.events.SelectionAdapter;
-import org.eclipse.swt.events.SelectionEvent;
-import org.eclipse.swt.events.SelectionListener;
-import org.eclipse.swt.layout.FillLayout;
-import org.eclipse.swt.layout.GridData;
-import org.eclipse.swt.layout.GridLayout;
-import org.eclipse.swt.widgets.Button;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.swt.widgets.Table;
-import org.eclipse.swt.widgets.TableColumn;
-import org.eclipse.swt.widgets.Text;
-import org.eclipse.ui.forms.widgets.FormToolkit;
-
-import com.gluster.storage.management.console.GlusterDataModelManager;
-import com.gluster.storage.management.console.VolumeOptionsContentProvider;
-import com.gluster.storage.management.console.VolumeOptionsTableLabelProvider;
-import com.gluster.storage.management.console.utils.GUIHelper;
-import com.gluster.storage.management.core.constants.CoreConstants;
-import com.gluster.storage.management.core.model.DefaultClusterListener;
-import com.gluster.storage.management.core.model.Event;
-import com.gluster.storage.management.core.model.Volume;
-import com.gluster.storage.management.core.model.VolumeOption;
-import com.gluster.storage.management.core.model.VolumeOptionInfo;
-
-public class VolumeOptionsPage extends Composite {
-
- private final FormToolkit toolkit = new FormToolkit(Display.getCurrent());
- private TableViewer tableViewer;
- private GUIHelper guiHelper = GUIHelper.getInstance();
- private Volume volume;
- private DefaultClusterListener clusterListener;
- private Text filterText;
- private List<VolumeOptionInfo> defaultVolumeOptions = GlusterDataModelManager.getInstance()
- .getVolumeOptionsInfo();
-
- public enum OPTIONS_TABLE_COLUMN_INDICES {
- OPTION_KEY, OPTION_VALUE
- };
-
- private static final String[] OPTIONS_TABLE_COLUMN_NAMES = new String[] { "Option Key", "Option Value" };
- private Button addTopButton;
- private Button addBottomButton;
- private TableViewerColumn keyColumn;
- private OptionKeyEditingSupport keyEditingSupport;
-
- public VolumeOptionsPage(final Composite parent, int style, Volume volume) {
- super(parent, style);
-
- this.volume = volume;
-
- toolkit.adapt(this);
- toolkit.paintBordersFor(this);
-
- setupPageLayout();
- addTopButton = createAddButton();
- filterText = guiHelper.createFilterText(toolkit, this);
-
- setupOptionsTableViewer(filterText);
-
- addBottomButton = createAddButton();
-
- if (defaultVolumeOptions.size() == volume.getOptions().size()) {
- setAddButtonsEnabled(false);
- }
-
- tableViewer.setInput(volume.getOptions());
-
- parent.layout(); // Important - this actually paints the table
- registerListeners(parent);
- }
-
- private void setAddButtonsEnabled(boolean enable) {
- addTopButton.setEnabled(enable);
- addBottomButton.setEnabled(enable);
- }
-
- private Button createAddButton() {
- return toolkit.createButton(this, "&Add", SWT.FLAT);
- }
-
- private void registerListeners(final Composite parent) {
- /**
- * Ideally not required. However the table viewer is not getting laid out properly on performing
- * "maximize + restore" So this is a hack to make sure that the table is laid out again on re-size of the window
- */
- addPaintListener(new PaintListener() {
-
- @Override
- public void paintControl(PaintEvent e) {
- parent.layout();
- }
- });
-
- clusterListener = new DefaultClusterListener() {
- @Override
- public void volumeChanged(Volume volume, Event event) {
- super.volumeChanged(volume, event);
-
- switch (event.getEventType()) {
- case VOLUME_OPTIONS_RESET:
- if (!tableViewer.getControl().isDisposed()) {
- //While reseting the options, clear the filter text before refreshing the tree
- filterText.setText("");
- tableViewer.refresh();
- setAddButtonsEnabled(true);
- }
- break;
-
- case VOLUME_OPTION_SET:
- String key = (String)event.getEventData();
- if (isNewOption(volume, key)) {
- // option has been set successfully by the user. re-enable the add button and search filter
- // textbox
- setAddButtonsEnabled(true);
- filterText.setEnabled(true);
- }
-
- if (defaultVolumeOptions.size() == volume.getOptions().size()) {
- setAddButtonsEnabled(false);
- }
-
- tableViewer.refresh();
- break;
- case VOLUME_CHANGED:
- tableViewer.refresh();
- if(volume.getOptions().size() == defaultVolumeOptions.size()) {
- setAddButtonsEnabled(false);
- } else {
- setAddButtonsEnabled(true);
- }
- default:
- break;
- }
- }
-
- private boolean isNewOption(Volume volume, String optionKey) {
- if (filterText.getText().length() > 0) {
- // user has been filtering the contents. adding new option is allowed only when contents are NOT
- // filtered. Thus it's impossible that this is a newly added option
- return false;
- }
-
- // if this is the last option in the volume options, it must be the new option
- return optionKey.equals(volume.getOptions().getOptions().get(volume.getOptions().size() - 1).getKey());
- }
- };
-
- SelectionListener addButtonSelectionListener = new SelectionAdapter() {
- @Override
- public void widgetSelected(SelectionEvent e) {
- // add an empty option to be filled up by user
- volume.setOption("", "");
-
- tableViewer.refresh();
- tableViewer.setSelection(new StructuredSelection(getEntry("")));
- keyColumn.getViewer().editElement(getEntry(""), 0); // edit newly created entry
-
- // disable the add button AND search filter textbox till user fills up the new option
- setAddButtonsEnabled(false);
- filterText.setEnabled(false);
- }
-
- private VolumeOption getEntry(String key) {
- for (VolumeOption entry : volume.getOptions().getOptions()) {
- if (entry.getKey().equals(key)) {
- return entry;
- }
- }
- return null;
- }
- };
- addTopButton.addSelectionListener(addButtonSelectionListener);
- addBottomButton.addSelectionListener(addButtonSelectionListener);
-
- // Make sure that add button is enabled only when search filter textbox is empty
- filterText.addModifyListener(new ModifyListener() {
- @Override
- public void modifyText(ModifyEvent e) {
- if (filterText.getText().length() > 0) {
- setAddButtonsEnabled(false);
- } else {
- if (defaultVolumeOptions.size() == volume.getOptions().size()) {
- setAddButtonsEnabled(false);
- } else {
- setAddButtonsEnabled(true);
- }
- }
- }
- });
-
- GlusterDataModelManager.getInstance().addClusterListener(clusterListener);
-
- addDisposeListener(new DisposeListener() {
-
- @Override
- public void widgetDisposed(DisposeEvent e) {
- toolkit.dispose();
-
- if (!(addTopButton.isEnabled() || addBottomButton.isEnabled())) {
- // user has selected key, but not added value. Since this is not a valid entry,
- // remove the last option (without value) from the volume
- volume.getOptions().remove(keyEditingSupport.getEntryBeingAdded().getKey());
- }
-
- GlusterDataModelManager.getInstance().removeClusterListener(clusterListener);
- }
- });
- }
-
- private void setupPageLayout() {
- final GridLayout layout = new GridLayout(2, false);
- layout.verticalSpacing = 10;
- layout.marginTop = 10;
- setLayout(layout);
- }
-
- private void setupOptionsTable(Composite parent) {
- Table table = tableViewer.getTable();
- table.setHeaderVisible(true);
- table.setLinesVisible(true);
-
- TableColumnLayout tableColumnLayout = createTableColumnLayout();
- parent.setLayout(tableColumnLayout);
-
- setColumnProperties(table, OPTIONS_TABLE_COLUMN_INDICES.OPTION_KEY, SWT.CENTER, 100);
- setColumnProperties(table, OPTIONS_TABLE_COLUMN_INDICES.OPTION_VALUE, SWT.CENTER, 100);
- }
-
- private TableColumnLayout createTableColumnLayout() {
- TableColumnLayout tableColumnLayout = new TableColumnLayout();
- ColumnLayoutData defaultColumnLayoutData = new ColumnWeightData(100);
-
- tableColumnLayout.setColumnData(createKeyColumn(), defaultColumnLayoutData);
- tableColumnLayout.setColumnData(createValueColumn(), defaultColumnLayoutData);
-
- return tableColumnLayout;
- }
-
- private TableColumn createValueColumn() {
- TableViewerColumn valueColumn = new TableViewerColumn(tableViewer, SWT.NONE);
- valueColumn.getColumn()
- .setText(OPTIONS_TABLE_COLUMN_NAMES[OPTIONS_TABLE_COLUMN_INDICES.OPTION_VALUE.ordinal()]);
- valueColumn.setLabelProvider(new ColumnLabelProvider() {
- @Override
- public String getText(Object element) {
- return ((VolumeOption) element).getValue();
- }
- });
-
- // User can edit value of a volume option
- valueColumn.setEditingSupport(new OptionValueEditingSupport(valueColumn.getViewer(), volume));
-
- return valueColumn.getColumn();
- }
-
- private TableColumn createKeyColumn() {
- keyColumn = new TableViewerColumn(tableViewer, SWT.NONE);
- keyColumn.getColumn().setText(OPTIONS_TABLE_COLUMN_NAMES[OPTIONS_TABLE_COLUMN_INDICES.OPTION_KEY.ordinal()]);
- keyColumn.setLabelProvider(new ColumnLabelProvider() {
- @Override
- public String getText(Object element) {
- return ((VolumeOption) element).getKey();
- }
-
- @Override
- public String getToolTipText(Object element) {
- String key = ((VolumeOption) element).getKey();
- if (key.isEmpty()) {
- return "Click to select a volume option key";
- }
-
- VolumeOptionInfo optionInfo = GlusterDataModelManager.getInstance().getVolumeOptionInfo(key);
- // Wrap the description before adding to tooltip so that long descriptions are displayed properly
- return WordUtils.wrap(optionInfo.getDescription(), 60) + CoreConstants.NEWLINE + "Default value: "
- + optionInfo.getDefaultValue();
- }
- });
-
- // Editing support required when adding new key
- keyEditingSupport = new OptionKeyEditingSupport(keyColumn.getViewer(), volume);
- keyColumn.setEditingSupport(keyEditingSupport);
-
- return keyColumn.getColumn();
- }
-
- private void createOptionsTableViewer(Composite parent) {
- tableViewer = new TableViewer(parent, SWT.FLAT | SWT.FULL_SELECTION | SWT.SINGLE);
- tableViewer.setLabelProvider(new VolumeOptionsTableLabelProvider());
- tableViewer.setContentProvider(new VolumeOptionsContentProvider());
- tableViewer.getTable().setLinesVisible(true);
-
- setupOptionsTable(parent);
- }
-
- private Composite createTableViewerComposite() {
- Composite tableViewerComposite = new Composite(this, SWT.NO);
- tableViewerComposite.setLayout(new FillLayout(SWT.HORIZONTAL));
-
- GridData layoutData = new GridData(SWT.FILL, SWT.FILL, true, true);
- layoutData.horizontalSpan = 2;
- tableViewerComposite.setLayoutData(layoutData);
-
- return tableViewerComposite;
- }
-
- private void setupOptionsTableViewer(final Text filterText) {
- Composite tableViewerComposite = createTableViewerComposite();
- createOptionsTableViewer(tableViewerComposite);
- ColumnViewerToolTipSupport.enableFor(tableViewer);
- // Create a case insensitive filter for the table viewer using the filter text field
- guiHelper.createFilter(tableViewer, filterText, false);
- }
-
- private void setColumnProperties(Table table, OPTIONS_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));
- }
-}
diff --git a/src/com.gluster.storage.management.console/src/com/gluster/storage/management/console/views/pages/VolumesPage.java b/src/com.gluster.storage.management.console/src/com/gluster/storage/management/console/views/pages/VolumesPage.java
deleted file mode 100644
index 484f91b0..00000000
--- a/src/com.gluster.storage.management.console/src/com/gluster/storage/management/console/views/pages/VolumesPage.java
+++ /dev/null
@@ -1,135 +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.console.views.pages;
-
-import java.util.List;
-
-import org.eclipse.jface.layout.TableColumnLayout;
-import org.eclipse.jface.viewers.ColumnWeightData;
-import org.eclipse.jface.viewers.IBaseLabelProvider;
-import org.eclipse.jface.viewers.IContentProvider;
-import org.eclipse.jface.viewers.ViewerComparator;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Table;
-import org.eclipse.swt.widgets.TableColumn;
-import org.eclipse.ui.IWorkbenchSite;
-
-import com.gluster.storage.management.console.EntityGroupContentProvider;
-import com.gluster.storage.management.console.VolumeTableLabelProvider;
-import com.gluster.storage.management.console.toolbar.GlusterToolbarManager;
-import com.gluster.storage.management.core.constants.CoreConstants;
-import com.gluster.storage.management.core.model.ClusterListener;
-import com.gluster.storage.management.core.model.DefaultClusterListener;
-import com.gluster.storage.management.core.model.EntityGroup;
-import com.gluster.storage.management.core.model.Event;
-import com.gluster.storage.management.core.model.Volume;
-
-public class VolumesPage extends AbstractTableViewerPage<Volume> {
- private List<Volume> volumes;
-
- final GlusterToolbarManager toolbarManager = new GlusterToolbarManager( site.getWorkbenchWindow());
-
- public enum VOLUME_TABLE_COLUMN_INDICES {
- NAME, VOLUME_TYPE, NUM_OF_BRICKS, TRANSPORT_TYPE, VOLUME_STATUS
- };
-
- private static final String[] VOLUME_TABLE_COLUMN_NAMES = new String[] { "Name", "Volume Type",
- "Number of" + CoreConstants.NEWLINE + "Bricks", "Transport Type", "Status" };
-
- public VolumesPage(final Composite parent, IWorkbenchSite site, EntityGroup<Volume> volumes) {
- super(site, parent, SWT.NONE, true, true, volumes);
- this.volumes = volumes.getEntities();
- }
-
- @Override
- protected String[] getColumnNames() {
- return VOLUME_TABLE_COLUMN_NAMES;
- }
-
- @Override
- protected void setColumnProperties(Table table) {
- setColumnProperties(table, VOLUME_TABLE_COLUMN_INDICES.VOLUME_STATUS, SWT.CENTER, 50);
- setColumnProperties(table, VOLUME_TABLE_COLUMN_INDICES.NUM_OF_BRICKS, SWT.CENTER, 50);
- setColumnProperties(table, VOLUME_TABLE_COLUMN_INDICES.TRANSPORT_TYPE, SWT.CENTER, 70);
- }
-
- @Override
- protected IBaseLabelProvider getLabelProvider() {
- return new VolumeTableLabelProvider();
- }
-
- @Override
- protected IContentProvider getContentProvider() {
- return new EntityGroupContentProvider<Volume>();
- }
-
- @Override
- protected ClusterListener createClusterListener() {
- return new DefaultClusterListener() {
- @Override
- public void volumeCreated(Volume volume) {
- tableViewer.add(volume);
- parent.update();
- toolbarManager.updateToolbar(volume);
- }
-
- @Override
- public void volumeDeleted(Volume volume) {
- tableViewer.remove(volume);
- parent.update();
- toolbarManager.updateToolbar(volume);
- }
-
- @Override
- public void volumeChanged(Volume volume, Event event) {
- tableViewer.update(volume, null);
- parent.update();
- toolbarManager.updateToolbar(volume);
- }
- };
- }
-
- /**
- * 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, VOLUME_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));
- }
-
- @Override
- protected List<Volume> getAllEntities() {
- return volumes;
- }
-
- @Override
- protected ViewerComparator createViewerComparator() {
- // TODO Auto-generated method stub
- return null;
- }
-}