Add GisService dialog panel

Project: 
http://git-wip-us.apache.org/repos/asf/incubator-taverna-plugin-gis/repo
Commit: 
http://git-wip-us.apache.org/repos/asf/incubator-taverna-plugin-gis/commit/7f5490f4
Tree: 
http://git-wip-us.apache.org/repos/asf/incubator-taverna-plugin-gis/tree/7f5490f4
Diff: 
http://git-wip-us.apache.org/repos/asf/incubator-taverna-plugin-gis/diff/7f5490f4

Branch: refs/heads/taverna2
Commit: 7f5490f40fbf112feb77426fd323a63bcd39a668
Parents: 8829db1
Author: edikaradumi <[email protected]>
Authored: Tue Aug 2 06:52:19 2016 +0100
Committer: edikaradumi <[email protected]>
Committed: Tue Aug 2 06:52:19 2016 +0100

----------------------------------------------------------------------
 .../ui/serviceprovider/AddGisServiceDialog.java | 378 +++++++++++++++++++
 1 file changed, 378 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-taverna-plugin-gis/blob/7f5490f4/apache-taverna-plugin-gis-activity-ui/src/main/java/org/apache/taverna/gis/ui/serviceprovider/AddGisServiceDialog.java
----------------------------------------------------------------------
diff --git 
a/apache-taverna-plugin-gis-activity-ui/src/main/java/org/apache/taverna/gis/ui/serviceprovider/AddGisServiceDialog.java
 
b/apache-taverna-plugin-gis-activity-ui/src/main/java/org/apache/taverna/gis/ui/serviceprovider/AddGisServiceDialog.java
new file mode 100644
index 0000000..e8e9c5c
--- /dev/null
+++ 
b/apache-taverna-plugin-gis-activity-ui/src/main/java/org/apache/taverna/gis/ui/serviceprovider/AddGisServiceDialog.java
@@ -0,0 +1,378 @@
+package org.apache.taverna.gis.ui.serviceprovider;
+
+import java.awt.Color;
+import java.awt.Dimension;
+import java.awt.FlowLayout;
+import java.awt.Frame;
+import java.awt.GridBagConstraints;
+import java.awt.GridBagLayout;
+import java.awt.Insets;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.awt.event.KeyEvent;
+
+import javax.swing.BorderFactory;
+import javax.swing.JButton;
+import javax.swing.JLabel;
+import javax.swing.JPanel;
+import javax.swing.JScrollPane;
+import javax.swing.JTable;
+import javax.swing.JTextField;
+import javax.swing.ListSelectionModel;
+import javax.swing.RowFilter;
+import javax.swing.SwingConstants;
+import javax.swing.border.EmptyBorder;
+import javax.swing.event.DocumentEvent;
+import javax.swing.event.DocumentListener;
+import javax.swing.table.DefaultTableModel;
+import javax.swing.table.TableRowSorter;
+
+import net.sf.taverna.t2.workbench.helper.HelpEnabledDialog;
+
+@SuppressWarnings("serial")
+public class AddGisServiceDialog extends HelpEnabledDialog {
+
+       private JTextField serviceLocationField;
+       private TableRowSorter<DefaultTableModel> sorter;
+       private JFilterTable processesTable;
+       
+       public AddGisServiceDialog(Frame frame) {
+               // null will call MainWindow.getMainWindow()
+               super(frame, "Add WPS service", true, null); // create a 
non-modal
+                                                                               
                                // dialog
+               initComponents();
+       }
+
+       private void initComponents() {
+               JPanel mainPanel = new JPanel(new GridBagLayout());
+               mainPanel.setBorder(new EmptyBorder(10, 10, 10, 10));
+
+               JPanel servicePanel = new JPanel(new GridBagLayout());
+               servicePanel.setBorder(BorderFactory.createTitledBorder("Select 
Web Processing Service"));
+
+               JPanel processPanel = new JPanel(new GridBagLayout());
+               processPanel.setBorder(BorderFactory.createTitledBorder("Select 
Processes"));
+
+               JPanel buttonsPanel = new JPanel(new 
FlowLayout(FlowLayout.CENTER));
+
+               GridBagConstraints gbc = new GridBagConstraints();
+
+               // add service panels
+               gbc.weighty = 0;
+               gbc.weightx = 1;
+               gbc.gridx = 0;
+               gbc.gridy = 0;
+               gbc.fill = GridBagConstraints.HORIZONTAL;
+               gbc.anchor = GridBagConstraints.FIRST_LINE_START;
+               gbc.insets = new Insets(0, 0, 5, 0);
+
+               mainPanel.add(servicePanel, gbc);
+
+               // add process panel
+               gbc.weighty = 1;
+               gbc.weightx = 1;
+               gbc.gridx = 0;
+               gbc.gridy = 1;
+               gbc.fill = GridBagConstraints.BOTH;
+               gbc.anchor = GridBagConstraints.WEST;
+               gbc.insets = new Insets(5, 0, 0, 0);
+
+               mainPanel.add(processPanel, gbc);
+
+               // add buttons panel
+               gbc.weighty = 0;
+               gbc.weightx = 1;
+               gbc.gridx = 0;
+               gbc.gridy = 2;
+               gbc.fill = GridBagConstraints.HORIZONTAL;
+               gbc.anchor = GridBagConstraints.WEST;
+               gbc.insets = new Insets(5, 0, 0, 0);
+
+               mainPanel.add(buttonsPanel, gbc);
+
+               initServicePanel(servicePanel);
+               initProcessPanel(processPanel);
+               initButtonsPanel(buttonsPanel);
+
+               getContentPane().add(mainPanel);
+
+               setMinimumSize(new Dimension(500, 500));
+       }
+
+       private void initServicePanel(JPanel servicePanel) {
+               GridBagConstraints gbc = new GridBagConstraints();
+
+               // add service url
+               JLabel serviceLocatitionLabel = new JLabel("Service URL", 
JLabel.LEFT);
+               gbc.weighty = 0;
+               gbc.weightx = 0;
+               gbc.gridx = 0;
+               gbc.gridy = 0;
+               gbc.fill = GridBagConstraints.NONE;
+               gbc.anchor = GridBagConstraints.WEST;
+               gbc.insets = new Insets(5, 10, 0, 0);
+
+               servicePanel.add(serviceLocatitionLabel, gbc);
+
+               serviceLocationField = new 
JTextField("http://somehost/service?";);
+               gbc.weighty = 0;
+               gbc.weightx = 1;
+               gbc.gridx = 0;
+               gbc.gridy = 1;
+               gbc.fill = GridBagConstraints.HORIZONTAL;
+               gbc.anchor = GridBagConstraints.WEST;
+               gbc.insets = new Insets(0, 10, 5, 5);
+
+               servicePanel.add(serviceLocationField, gbc);
+
+               JButton serviceLocationButton = new JButton("Search");
+               gbc.weighty = 0;
+               gbc.weightx = 0;
+               gbc.gridx = 1;
+               gbc.gridy = 1;
+               gbc.fill = GridBagConstraints.NONE;
+               gbc.anchor = GridBagConstraints.EAST;
+               gbc.insets = new Insets(0, 10, 5, 5);
+
+               servicePanel.add(serviceLocationButton, gbc);
+       }
+
+       private void initProcessPanel(JPanel processPanel) {
+               GridBagConstraints gbc = new GridBagConstraints();
+
+               // Add Process Filter
+               JLabel processFilterLabel = new JLabel("Filter", JLabel.LEFT);
+               gbc.weighty = 0;
+               gbc.weightx = 0;
+               gbc.gridx = 0;
+               gbc.gridy = 0;
+               gbc.fill = GridBagConstraints.NONE;
+               gbc.anchor = GridBagConstraints.WEST;
+               gbc.insets = new Insets(5, 10, 0, 0);
+
+               processPanel.add(processFilterLabel, gbc);
+
+               JTextField processFilterField = createFilterTextField();
+               gbc.weighty = 0;
+               gbc.weightx = 1;
+               gbc.gridx = 0;
+               gbc.gridy = 1;
+               gbc.fill = GridBagConstraints.HORIZONTAL;
+               gbc.anchor = GridBagConstraints.WEST;
+               gbc.insets = new Insets(0, 10, 5, 5);
+
+               processPanel.add(processFilterField, gbc);
+
+               JPanel selectOptions = new JPanel(new GridBagLayout());
+
+               // Add Select/Deselect All Buttons
+               JButton selectAll = createUrlButton("Select All");
+
+               selectAll.addActionListener(new ActionListener() {
+                       public void actionPerformed(ActionEvent evt) {
+                               checkAllProcesses(true);
+                       }
+               });
+
+               gbc.weighty = 0;
+               gbc.weightx = 0.5;
+               gbc.gridx = 0;
+               gbc.gridy = 0;
+               gbc.fill = GridBagConstraints.HORIZONTAL;
+               gbc.anchor = GridBagConstraints.WEST;
+               gbc.insets = new Insets(0, 10, 5, 5);
+
+               selectOptions.add(selectAll, gbc);
+
+               JButton deselectAll = createUrlButton("Deselect All");
+
+               deselectAll.addActionListener(new ActionListener() {
+                       public void actionPerformed(ActionEvent evt) {
+                               checkAllProcesses(false);
+                       }
+               });
+
+               gbc.weighty = 0;
+               gbc.weightx = 0.5;
+               gbc.gridx = 1;
+               gbc.gridy = 0;
+               gbc.fill = GridBagConstraints.HORIZONTAL;
+               gbc.anchor = GridBagConstraints.WEST;
+               gbc.insets = new Insets(0, 10, 5, 5);
+
+               selectOptions.add(deselectAll, gbc);
+
+               gbc.weighty = 0;
+               gbc.weightx = 0.5;
+               gbc.gridx = 0;
+               gbc.gridy = 2;
+               gbc.fill = GridBagConstraints.HORIZONTAL;
+               gbc.anchor = GridBagConstraints.WEST;
+               gbc.insets = new Insets(0, 10, 5, 5);
+
+               processPanel.add(selectOptions, gbc);
+
+               // Add Processes List
+
+               // TODO: Get processes from GWS
+
+               Object[] columnNames = { "", "Process" };
+               Object[][] data = { { false, "Checkbox1" }, { true, "Checkbox2" 
}, { true, "Checkbox3" },
+                               { false, "Checkbox4" }, { true, "Checkbox5" }, 
{ true, "Checkbox6" }, { false, "Checkbox7" },
+                               { true, "Checkbox8" }, { true, "Checkbox9" }, { 
false, "Checkbox10" }, { true, "Checkbox11" },
+                               { true, "Checkbox12" } };
+
+               DefaultTableModel model = new DefaultTableModel(data, 
columnNames) {
+
+                       @Override
+                       public boolean isCellEditable(int row, int column) {
+                               // Only the first column
+                               return column == 0;
+                       }
+
+               };
+
+               sorter = new TableRowSorter<DefaultTableModel>(model);
+
+               processesTable = new JFilterTable(model);
+               processesTable.setRowSorter(sorter);
+
+               
processesTable.getColumnModel().getColumn(0).setPreferredWidth(20);
+               
processesTable.getColumnModel().getColumn(1).setPreferredWidth(250);
+
+               processesTable.setPreferredScrollableViewportSize(new 
Dimension(300, 100));
+               processesTable.setFillsViewportHeight(true);
+               
processesTable.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
+
+               JScrollPane scrollPane = new JScrollPane(processesTable);
+
+               gbc.weighty = 1;
+               gbc.weightx = 1;
+               gbc.gridx = 0;
+               gbc.gridy = 3;
+               gbc.fill = GridBagConstraints.BOTH;
+               gbc.anchor = GridBagConstraints.WEST;
+               gbc.insets = new Insets(0, 10, 5, 5);
+
+               processPanel.add(scrollPane, gbc);
+       }
+
+       private void initButtonsPanel(JPanel buttonsPanel) {
+               // add service buttons
+               final JButton addServiceButton = new JButton("Add");
+               addServiceButton.addActionListener(new ActionListener() {
+                       public void actionPerformed(ActionEvent evt) {
+                               addPressed();
+                       }
+               });
+
+               // When user presses "Return" key fire the action on the "Add" 
button
+               addServiceButton.addKeyListener(new java.awt.event.KeyAdapter() 
{
+                       public void keyPressed(java.awt.event.KeyEvent evt) {
+                               if (evt.getKeyCode() == KeyEvent.VK_ENTER) {
+                                       addPressed();
+                               }
+                       }
+               });
+
+               final JButton cancelServiceButton = new JButton("Cancel");
+               cancelServiceButton.addActionListener(new ActionListener() {
+                       public void actionPerformed(ActionEvent evt) {
+                               // TODO: Implement dispose
+                       }
+               });
+
+               getRootPane().setDefaultButton(addServiceButton);
+
+               buttonsPanel.add(addServiceButton);
+               buttonsPanel.add(cancelServiceButton);
+
+               // TODO: Set same button size
+               addServiceButton.setMaximumSize(cancelServiceButton.getSize());
+
+       }
+
+       private void checkAllProcesses(boolean value) {
+               for (int i = 0; i < processesTable.getRowCount(); i++)
+                       processesTable.getModel().setValueAt(value, i, 0);
+
+       }
+
+       private void addPressed() {
+               // TODO Auto-generated method stub
+
+       }
+
+       private JTextField createFilterTextField() {
+               final JTextField field = new JTextField();
+
+               final int FILTER_COLUMN_INDEX = 1;
+
+               field.getDocument().addDocumentListener(new DocumentListener() {
+                       @Override
+                       public void insertUpdate(DocumentEvent e) {
+                               filterProcesses(field.getText(), 
FILTER_COLUMN_INDEX);
+                       }
+
+                       @Override
+                       public void removeUpdate(DocumentEvent e) {
+                               filterProcesses(field.getText(), 
FILTER_COLUMN_INDEX);
+                       }
+
+                       @Override
+                       public void changedUpdate(DocumentEvent e) {
+                               filterProcesses(field.getText(), 
FILTER_COLUMN_INDEX);
+                       }
+
+               });
+
+               return field;
+
+       }
+
+       private void filterProcesses(String criteria, int columnIndex) {
+               RowFilter<DefaultTableModel, Object> rowFilter = null;
+
+               try {
+                       rowFilter = RowFilter.regexFilter("(?i)" + criteria, 
columnIndex);
+               } catch (java.util.regex.PatternSyntaxException e) {
+                       return;
+               }
+
+               sorter.setRowFilter(rowFilter);
+
+       }
+
+       private JButton createUrlButton(String buttonText) {
+               JButton button = new JButton();
+               button.setText("<HTML><FONT color=\"#000099\"><U>" + buttonText 
+ "</U></FONT></HTML>");
+               button.setHorizontalAlignment(SwingConstants.CENTER);
+               button.setBorderPainted(false);
+               button.setOpaque(false);
+               button.setBackground(Color.WHITE);
+
+               return button;
+       }
+
+       @SuppressWarnings("serial")
+       public class JFilterTable extends JTable {
+
+               public JFilterTable(DefaultTableModel model) {
+                       super(model);
+               }
+
+               @SuppressWarnings({ "unchecked", "rawtypes" })
+               @Override
+               public Class getColumnClass(int column) {
+                       switch (column) {
+                       case 0:
+                               return Boolean.class;
+                       case 1:
+                               return String.class;
+                       default:
+                               return String.class;
+                       }
+               }
+       };
+
+}

Reply via email to