diff options
Diffstat (limited to 'src/com.gluster.storage.management.console/src/com/gluster/storage/management/console/dialogs/InitializeDiskTypeSelection.java')
-rw-r--r-- | src/com.gluster.storage.management.console/src/com/gluster/storage/management/console/dialogs/InitializeDiskTypeSelection.java | 110 |
1 files changed, 95 insertions, 15 deletions
diff --git a/src/com.gluster.storage.management.console/src/com/gluster/storage/management/console/dialogs/InitializeDiskTypeSelection.java b/src/com.gluster.storage.management.console/src/com/gluster/storage/management/console/dialogs/InitializeDiskTypeSelection.java index 4b64ea96..b484d6d2 100644 --- a/src/com.gluster.storage.management.console/src/com/gluster/storage/management/console/dialogs/InitializeDiskTypeSelection.java +++ b/src/com.gluster.storage.management.console/src/com/gluster/storage/management/console/dialogs/InitializeDiskTypeSelection.java @@ -21,23 +21,30 @@ *******************************************************************************/ package com.gluster.storage.management.console.dialogs; -import java.util.ArrayList; import java.util.List; import org.eclipse.jface.dialogs.Dialog; +import org.eclipse.jface.dialogs.MessageDialog; import org.eclipse.swt.SWT; +import org.eclipse.swt.events.ModifyEvent; +import org.eclipse.swt.events.ModifyListener; import org.eclipse.swt.events.TraverseEvent; import org.eclipse.swt.events.TraverseListener; +import org.eclipse.swt.graphics.Color; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.widgets.Combo; 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.swt.widgets.Shell; +import org.eclipse.swt.widgets.Text; +import org.eclipse.ui.forms.events.HyperlinkAdapter; +import org.eclipse.ui.forms.events.HyperlinkEvent; +import org.eclipse.ui.forms.widgets.Hyperlink; import com.gluster.storage.management.console.utils.GUIHelper; -import com.gluster.storage.management.core.constants.GlusterConstants; public class InitializeDiskTypeSelection extends Dialog { @@ -46,9 +53,16 @@ public class InitializeDiskTypeSelection extends Dialog { private Composite initializeDiskTypeComposite; private Composite composite; private String fsType; + private String mountPointText; + private Text mountPoint; + private String deviceName; + private List<String> possibleFsType; + private String defaultMountPoint = "/export/"; - public InitializeDiskTypeSelection(Shell parentShell) { + public InitializeDiskTypeSelection(Shell parentShell, String formatingDeviceName, List<String> possibleFsType) { super(parentShell); + this.possibleFsType = possibleFsType; + this.deviceName = formatingDeviceName; // TODO Auto-generated constructor stub } @@ -98,32 +112,84 @@ public class InitializeDiskTypeSelection extends Dialog { GridLayout layout = new GridLayout(3, false); initializeDiskTypeComposite.setLayout(layout); - createLabel(initializeDiskTypeComposite, "Format disk using "); + createLabel(initializeDiskTypeComposite, "File system "); createFormatTypeCombo(initializeDiskTypeComposite); - createLabel(initializeDiskTypeComposite, " file system"); + createLabel(initializeDiskTypeComposite, "Mount point "); + createMountPointText(initializeDiskTypeComposite); + createChangeLink(initializeDiskTypeComposite); } private void createLabel(Composite composite, String labelText) { Label formatTypeLabel = new Label(composite, SWT.NONE); formatTypeLabel.setText(labelText); - formatTypeLabel.setLayoutData(new GridData(GridData.END, GridData.CENTER, false, false)); + formatTypeLabel.setLayoutData(new GridData(GridData.BEGINNING, GridData.CENTER, false, false)); } private void createFormatTypeCombo(Composite composite) { - List<String> fsType = new ArrayList<String>(); - fsType.add(GlusterConstants.FSTYPE_DEFAULT); - fsType.add(GlusterConstants.FSTYPE_EXT_3); - fsType.add(GlusterConstants.FSTYPE_EXT_4); - fsType.add(GlusterConstants.FSTYPE_XFS); formatTypeCombo = new Combo(composite, SWT.READ_ONLY); - formatTypeCombo.setItems(fsType.toArray(new String[0])); + formatTypeCombo.setItems(possibleFsType.toArray(new String[0])); formatTypeCombo.select(0); + new Label(composite, SWT.NONE); } + private void createMountPointText(Composite container) { + mountPoint = new Text(container, SWT.BORDER); + GridData txtNameData = new GridData(SWT.LEFT, SWT.CENTER, true, false, 1, 1); + txtNameData.horizontalSpan = 1; + txtNameData.widthHint = 400; + mountPoint.setTextLimit(100); + mountPoint.setLayoutData(txtNameData); + mountPoint.setText(defaultMountPoint + deviceName); + mountPoint.setEnabled(false); + mountPoint.addModifyListener(new ModifyListener() { + @Override + public void modifyText(ModifyEvent e) { + validateMountPoint(mountPoint.getText().trim()); + } + }); + } + + private void createChangeLink(Composite container) { + final Hyperlink changeLink = new Hyperlink(container, SWT.UNDERLINE_SINGLE); + changeLink.setText("change"); + changeLink.setUnderlined(true); + changeLink.setForeground(new Color(Display.getDefault(), 0, 0, 255)); + + changeLink.addHyperlinkListener(new HyperlinkAdapter() { + + // private void finishEdit() { + // changeLink.setText("change"); + // mountPoint.setEnabled(false); + // } + + private void startEdit() { + // changeLink.setText("update"); + changeLink.setVisible(false); + mountPoint.setEnabled(true); + } + + @Override + public void linkActivated(HyperlinkEvent e) { + if (mountPoint.isEnabled()) { + // we were already in edit mode. + // finishEdit(); + } else { + // Get in to edit mode + startEdit(); + } + } + }); + } + @Override protected void okPressed() { - fsType = formatTypeCombo.getText(); - super.okPressed(); + fsType = formatTypeCombo.getText().trim(); + mountPointText = mountPoint.getText().trim(); + if (validateForm()) { + super.okPressed(); + } else { + MessageDialog.openError(getShell(), "Error: Validation error!", "Empty or Invalid mountpoint."); + } } @Override @@ -131,6 +197,17 @@ public class InitializeDiskTypeSelection extends Dialog { super.cancelPressed(); } + private boolean validateMountPoint(String deviceMountPoint) { + if (deviceMountPoint.isEmpty()) { + return false; + } + return deviceMountPoint.matches("^/.+"); + } + + private boolean validateForm() { + return (!formatTypeCombo.getText().trim().isEmpty() && validateMountPoint( mountPoint.getText().trim())); + } + /** * Overriding to make sure that the dialog is centered in screen */ @@ -142,7 +219,10 @@ public class InitializeDiskTypeSelection extends Dialog { } public String getFSType() { - return fsType.trim(); + return fsType; } + public String getMountPoint() { + return mountPointText; + } } |