[kepler-code] r28846 - trunk/modules/workflow-scheduler-gui/src/org/kepler/workflowscheduler/gui/configurationwizard
tao at ecoinformatics.org
tao at ecoinformatics.org
Mon Oct 31 11:30:49 PDT 2011
Author: tao
Date: 2011-10-31 11:30:49 -0700 (Mon, 31 Oct 2011)
New Revision: 28846
Modified:
trunk/modules/workflow-scheduler-gui/src/org/kepler/workflowscheduler/gui/configurationwizard/WorkflowRunEngineConfigurationDialog.java
Log:
Add panels to the dialog.
Modified: trunk/modules/workflow-scheduler-gui/src/org/kepler/workflowscheduler/gui/configurationwizard/WorkflowRunEngineConfigurationDialog.java
===================================================================
--- trunk/modules/workflow-scheduler-gui/src/org/kepler/workflowscheduler/gui/configurationwizard/WorkflowRunEngineConfigurationDialog.java 2011-10-31 14:04:15 UTC (rev 28845)
+++ trunk/modules/workflow-scheduler-gui/src/org/kepler/workflowscheduler/gui/configurationwizard/WorkflowRunEngineConfigurationDialog.java 2011-10-31 18:30:49 UTC (rev 28846)
@@ -28,7 +28,249 @@
*/
package org.kepler.workflowscheduler.gui.configurationwizard;
-public class WorkflowRunEngineConfigurationDialog
+import java.awt.BorderLayout;
+import java.awt.Dimension;
+import java.awt.GridBagConstraints;
+import java.awt.GridBagLayout;
+import java.awt.Insets;
+import java.awt.Window;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.util.Vector;
+
+import javax.swing.BorderFactory;
+import javax.swing.Box;
+import javax.swing.BoxLayout;
+import javax.swing.JButton;
+import javax.swing.JDialog;
+import javax.swing.JLabel;
+import javax.swing.JOptionPane;
+import javax.swing.JPanel;
+import javax.swing.JTextField;
+
+import org.kepler.module.workflowschedulergui.Initialize;
+import org.kepler.workflowscheduler.gui.WorkflowRunEngine;
+import org.kepler.workflowscheduler.gui.WorkflowSchedulerPanel;
+
+/**
+ * A dialog to configure the workflow run engines.
+ * @author tao
+ *
+ */
+public class WorkflowRunEngineConfigurationDialog extends JDialog
{
+ private static final String TITLE = "Workflow Run Engine Configuration";
+ private static final String DEFAULTNAME = "The Run Engine Name";
+ private static final String DEFAULTURL = "http://yourhostname/workflowrunengine/services/KeplerWebService";
+ private static final int WIDTH = 800;
+ private static final int HEIGHT = 200;
+ static final int LEADSPACESIZE = 50; // leading space of each row
+ static final int TEXTFIELDSIZE = 600;
+ private Window parent = null;
+ private GridBagConstraints textFieldConstraint = null;
+ private GridBagConstraints labelConstraint = null;
+ private GridBagConstraints lastConstraint = null;
+ private JTextField nameTextField = null;
+ private JTextField urlTextField = null;
+ private JPanel mainPanel = null;
+ private JPanel addingEnginePanel = null;
+ private KnownWorkflowRunEnginePanel knownRunEnginePanel = null;
+ private CompletingConfigurationListenerInterface completeListener = null;
+
+ /**
+ * Constructor
+ */
+ public WorkflowRunEngineConfigurationDialog(Window parent,
+ CompletingConfigurationListenerInterface completeListener)
+ {
+ super(parent);
+ this.parent = parent;
+ this.completeListener = completeListener;
+ init();
+ this.pack();
+ this.setVisible(true);
+ }
+
+
+ /*
+ * Initialize the dialog
+ */
+ private void init()
+ {
+ setPreferredSize(new Dimension(WIDTH, HEIGHT));
+ if(parent != null)
+ {
+ setLocation(parent.getLocation());
+ }
+ setTitle(TITLE);
+ setModal(true);
+ setLayout(new BorderLayout());
+ initializeGridBagLayout();
+ initMainPanel();
+ initCloseButtonPanel();
+ }
+
+ /*
+ * Initialize the grid bag layout manager
+ */
+ private void initializeGridBagLayout()
+ {
+ textFieldConstraint = new GridBagConstraints();
+ textFieldConstraint.fill = GridBagConstraints.HORIZONTAL;
+ //lastConstraint.anchor = GridBagConstraints.NORTHWEST;
+ // Give the "last" component as much space as possible
+ textFieldConstraint.weightx = 1.0;
+ //textFieldConstraint.gridwidth = GridBagConstraints.RELATIVE;
+ textFieldConstraint.insets = new Insets(4, 4, 4, 4);
+ lastConstraint = (GridBagConstraints) textFieldConstraint.clone();
+ //These still get as much space as possible, but do
+ //not close out a row
+ lastConstraint.gridwidth = GridBagConstraints.REMAINDER;
+
+ // first component (usually it is a label) on each row
+ labelConstraint = (GridBagConstraints) textFieldConstraint.clone();
+ // Give these as little space as necessary
+ labelConstraint.weightx = 0.0;
+ labelConstraint.gridwidth = 1;
+
+ }
+
+ /*
+ * MainPanel will contain two parts:
+ * 1. AddingEnginePanel - contains text input fields and add button
+ * 2. KnownWorkflowRunEngine panle - displays the known engines.
+ */
+ private void initMainPanel()
+ {
+ mainPanel = new JPanel();
+ mainPanel.setLayout(new BorderLayout());
+ initAddingEnginePanel();
+ mainPanel.add(addingEnginePanel, BorderLayout.NORTH);
+ WorkflowRunEngine[] engineList = getWorkflowRunEngineArrayFromConfig();
+ knownRunEnginePanel = new KnownWorkflowRunEnginePanel(engineList);
+ if(engineList == null)
+ {
+ knownRunEnginePanel.setVisible(false);
+ }
+ mainPanel.add(knownRunEnginePanel, BorderLayout.SOUTH);
+ }
+
+ /*
+ * Initialize the panel adding workflow run engine name and url.
+ * It has a panel for two text fields which user can input engine name and url.
+ * It also has a panel for the add button
+ */
+ private void initAddingEnginePanel()
+ {
+ addingEnginePanel = new JPanel();
+ addingEnginePanel.setLayout(new BorderLayout());
+ initNameAndURLInputPanel();
+ initAddButtonPanel();
+ }
+
+ private void initNameAndURLInputPanel()
+ {
+ JPanel nameAndURLPanel = new JPanel();
+ GridBagLayout gridbag = new GridBagLayout();
+ nameAndURLPanel.setLayout(gridbag);
+
+ //name row
+ WorkflowSchedulerURLConfigurationDialog.addLeadingSpace(nameAndURLPanel, gridbag, labelConstraint);
+ JLabel nameLabel = new JLabel("Name ");
+ WorkflowSchedulerPanel.addComponent(nameAndURLPanel, nameLabel, gridbag, labelConstraint);
+ nameTextField = new JTextField();
+ nameTextField.setText(DEFAULTNAME);
+ WorkflowSchedulerPanel.addFixWidthComponent(nameAndURLPanel, nameTextField , gridbag, textFieldConstraint);
+ WorkflowSchedulerURLConfigurationDialog.addEndingSpace(nameAndURLPanel, gridbag,lastConstraint);
+
+ //url row
+ WorkflowSchedulerURLConfigurationDialog.addLeadingSpace(nameAndURLPanel, gridbag, labelConstraint);
+ JLabel urlLabel = new JLabel("URL ");
+ WorkflowSchedulerPanel.addComponent(nameAndURLPanel, urlLabel, gridbag, labelConstraint);
+ urlTextField = new JTextField();
+ urlTextField.setText(DEFAULTURL);
+ WorkflowSchedulerPanel.addFixWidthComponent(nameAndURLPanel, urlTextField , gridbag, textFieldConstraint);
+ WorkflowSchedulerURLConfigurationDialog.addEndingSpace(nameAndURLPanel, gridbag,lastConstraint);
+
+ addingEnginePanel.add(nameAndURLPanel, BorderLayout.CENTER);
+ }
+
+ /*
+ * Initialize the button panel which contains the add button.
+ * This button panel will be added to addingEnginePanel
+ */
+ private void initAddButtonPanel()
+ {
+ JPanel buttonPanel = new JPanel();
+ buttonPanel.setLayout(new BoxLayout(buttonPanel, BoxLayout.X_AXIS));
+ buttonPanel.setBorder(BorderFactory.createEmptyBorder(10, 10, 10, 10));
+ buttonPanel.add(Box.createHorizontalGlue());
+ JButton addButton = new JButton("Add");
+ addButton.setPreferredSize(new Dimension(100, 50));
+ addButton.addActionListener(new ActionListener()
+ {
+ public void actionPerformed(ActionEvent e)
+ {
+ try
+ {
+ modifyRunEngineToConfig();
+ }
+ catch(Exception ee)
+ {
+ JOptionPane.showMessageDialog(null, "Couldn't add the new Run Enginel - "+ee.getMessage(), "Error", JOptionPane.ERROR_MESSAGE);
+ }
+ }
+ });
+ buttonPanel.add(addButton);
+ addingEnginePanel.add(buttonPanel, BorderLayout.SOUTH);
+ }
+
+ /*
+ * Initialize the panel containing the close button which close the dialog(top level)
+ */
+ private void initCloseButtonPanel()
+ {
+ JPanel buttonPanel = new JPanel();
+ buttonPanel.setLayout(new BoxLayout(buttonPanel, BoxLayout.X_AXIS));
+ buttonPanel.setBorder(BorderFactory.createEmptyBorder(10, 10, 10, 10));
+ buttonPanel.add(Box.createHorizontalGlue());
+ JButton cancelButton = new JButton("Close");
+ cancelButton.setPreferredSize(new Dimension(100, 50));
+ cancelButton.addActionListener(new ActionListener()
+ {
+ public void actionPerformed(ActionEvent e)
+ {
+ dispose();
+ }
+ });
+ buttonPanel.add(cancelButton);
+ //buttonPanel.add(Box.createHorizontalStrut(10));
+ this.add(buttonPanel, BorderLayout.SOUTH);
+ }
+
+ /*
+ * A method will modify the workflow run engine value in the configuration
+ */
+ private void modifyRunEngineToConfig()
+ {
+
+ }
+
+ /*
+ * Get the array of workflow run engine from configuration.
+ * null will be return if we can't find one.
+ */
+ private WorkflowRunEngine[] getWorkflowRunEngineArrayFromConfig()
+ {
+ WorkflowRunEngine[] engineList = null;
+ Vector<WorkflowRunEngine> engineVector = Initialize.getWorkflowRunEngineList();
+ if(engineVector != null && engineVector.size() > 0)
+ {
+ engineList = new WorkflowRunEngine[engineVector.size()];
+ engineVector.toArray(engineList);
+ }
+ return engineList;
+ }
+
}
More information about the Kepler-cvs
mailing list