http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench-common-activities/blob/163747de/taverna-spreadsheet-import-activity-ui/src/main/java/org/apache/taverna/activities/spreadsheet/views/SpreadsheetImportConfigView.java ---------------------------------------------------------------------- diff --git a/taverna-spreadsheet-import-activity-ui/src/main/java/org/apache/taverna/activities/spreadsheet/views/SpreadsheetImportConfigView.java b/taverna-spreadsheet-import-activity-ui/src/main/java/org/apache/taverna/activities/spreadsheet/views/SpreadsheetImportConfigView.java new file mode 100644 index 0000000..41810bf --- /dev/null +++ b/taverna-spreadsheet-import-activity-ui/src/main/java/org/apache/taverna/activities/spreadsheet/views/SpreadsheetImportConfigView.java @@ -0,0 +1,1081 @@ +/* +* Licensed to the Apache Software Foundation (ASF) under one +* or more contributor license agreements. See the NOTICE file +* distributed with this work for additional information +* regarding copyright ownership. The ASF licenses this file +* to you under the Apache License, Version 2.0 (the +* "License"); you may not use this file except in compliance +* with the License. You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, +* software distributed under the License is distributed on an +* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +* KIND, either express or implied. See the License for the +* specific language governing permissions and limitations +* under the License. +*/ + +package org.apache.taverna.activities.spreadsheet.views; + +import java.awt.BorderLayout; +import java.awt.CardLayout; +import java.awt.Color; +import java.awt.Component; +import java.awt.Dimension; +import java.awt.FlowLayout; +import java.awt.Font; +import java.awt.Graphics; +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.ItemEvent; +import java.awt.event.ItemListener; +import java.util.HashMap; +import java.util.HashSet; +import java.util.Map; +import java.util.Map.Entry; +import java.util.Set; +import java.util.Stack; + +import javax.swing.ButtonGroup; +import javax.swing.DefaultCellEditor; +import javax.swing.JButton; +import javax.swing.JCheckBox; +import javax.swing.JComponent; +import javax.swing.JLabel; +import javax.swing.JPanel; +import javax.swing.JRadioButton; +import javax.swing.JScrollPane; +import javax.swing.JTable; +import javax.swing.JTextField; +import javax.swing.SwingConstants; +import javax.swing.border.Border; +import javax.swing.border.CompoundBorder; +import javax.swing.border.EmptyBorder; +import javax.swing.event.DocumentEvent; +import javax.swing.event.DocumentListener; +import javax.swing.table.DefaultTableColumnModel; +import javax.swing.table.TableCellEditor; +import javax.swing.table.TableColumn; +import javax.swing.text.AttributeSet; +import javax.swing.text.BadLocationException; +import javax.swing.text.JTextComponent; +import javax.swing.text.PlainDocument; + +import org.apache.taverna.activities.spreadsheet.Range; +import org.apache.taverna.activities.spreadsheet.SpreadsheetUtils; +import org.apache.taverna.activities.spreadsheet.il8n.SpreadsheetImportUIText; +import org.apache.taverna.lang.ui.DialogTextArea; +import org.apache.taverna.lang.ui.icons.Icons; +import org.apache.taverna.workbench.ui.views.contextualviews.activity.ActivityConfigurationPanel; + +import org.apache.commons.lang.StringEscapeUtils; +import org.apache.log4j.Logger; + +import org.apache.taverna.commons.services.ServiceRegistry; +import org.apache.taverna.scufl2.api.activity.Activity; + +import com.fasterxml.jackson.databind.JsonNode; +import com.fasterxml.jackson.databind.node.ArrayNode; +import com.fasterxml.jackson.databind.node.ObjectNode; + +/** + * Configuration panel for the spreadsheet import activity. + * + * @author David Withers + */ +@SuppressWarnings("serial") +public class SpreadsheetImportConfigView extends ActivityConfigurationPanel { + + private static final String INCONSISTENT_ROW_MESSAGE = SpreadsheetImportUIText + .getString("SpreadsheetImportConfigView.INCONSISTENT_ROW_MESSAGE"); + + private static final String INCONSISTENT_COLUMN_MESSAGE = SpreadsheetImportUIText + .getString("SpreadsheetImportConfigView.INCONSISTENT_COLUMN_MESSAGE"); + + private static final String FROM_COLUMN_ERROR_MESSAGE = SpreadsheetImportUIText + .getString("SpreadsheetImportConfigView.FROM_COLUMN_ERROR_MESSAGE"); + + private static final String TO_COLUMN_ERROR_MESSAGE = SpreadsheetImportUIText + .getString("SpreadsheetImportConfigView.TO_COLUMN_ERROR_MESSAGE"); + + private static final String FROM_ROW_ERROR_MESSAGE = SpreadsheetImportUIText + .getString("SpreadsheetImportConfigView.FROM_ROW_ERROR_MESSAGE"); + + private static final String TO_ROW_ERROR_MESSAGE = SpreadsheetImportUIText + .getString("SpreadsheetImportConfigView.TO_ROW_ERROR_MESSAGE"); + + private static final String DEFAULT_MESSAGE = SpreadsheetImportUIText + .getString("SpreadsheetImportConfigView.DEFAULT_MESSAGE"); + + private static final String EMPTY_FROM_ROW_ERROR_MESSAGE = SpreadsheetImportUIText + .getString("SpreadsheetImportConfigView.EMPTY_FROM_ROW_ERROR_MESSAGE"); + + private static final String EMPTY_FROM_COLUMN_ERROR_MESSAGE = SpreadsheetImportUIText + .getString("SpreadsheetImportConfigView.EMPTY_FROM_COLUMN_ERROR_MESSAGE"); + + private static final String EMPTY_TO_COLUMN_ERROR_MESSAGE = SpreadsheetImportUIText + .getString("SpreadsheetImportConfigView.EMPTY_TO_COLUMN_ERROR_MESSAGE"); + + private static final String DUPLICATE_PORT_NAME_ERROR_MESSAGE = SpreadsheetImportUIText + .getString("SpreadsheetImportConfigView.DUPLICATE_PORT_NAME_ERROR_MESSAGE"); + + private static Logger logger = Logger.getLogger(SpreadsheetImportConfigView.class); + + private JPanel titlePanel, contentPanel, buttonPanel, page1, page2; + + private JLabel titleLabel, titleIcon, rowLabel, columnLabel; + + private JLabel emptyCellLabel, outputFormatLabel, outputFormatDelimiterLabel, columnMappingLabel; + + private DialogTextArea titleMessage; + + private JTextField columnFromValue, columnToValue, rowFromValue, rowToValue; + + private JTextField emptyCellUserDefinedValue, outputFormatDelimiter; + + private JCheckBox rowSelectAllOption, rowExcludeFirstOption, rowIgnoreBlankRows; + + private ButtonGroup emptyCellButtonGroup, outputFormatButtonGroup; + + private JRadioButton emptyCellEmptyStringOption, emptyCellUserDefinedOption, + emptyCellErrorValueOption; + + private JRadioButton outputFormatMultiplePort, outputFormatSinglePort; + + private JTable columnMappingTable; + + private SpreadsheetImportConfigTableModel columnMappingTableModel; + + private JButton nextButton, backButton; + + private CardLayout cardLayout = new CardLayout(); + + private Stack<String> warningMessages = new Stack<String>(); + + private Stack<String> errorMessages = new Stack<String>(); + + private ObjectNode newConfiguration; + + private final ServiceRegistry serviceRegistry; + + /** + * Constructs a configuration view for an SpreadsheetImport Activity. + * + * @param activity + */ + public SpreadsheetImportConfigView(Activity activity, ServiceRegistry serviceRegistry) { + super(activity); + this.serviceRegistry = serviceRegistry; + initialise(); + } + + @Override + protected void initialise() { + super.initialise(); + newConfiguration = getJson().deepCopy(); + + // title + titlePanel = new JPanel(new BorderLayout()); + titlePanel.setBackground(Color.WHITE); + addDivider(titlePanel, SwingConstants.BOTTOM, true); + + titleLabel = new JLabel(SpreadsheetImportUIText.getString("SpreadsheetImportConfigView.panelTitle")); + titleLabel.setFont(titleLabel.getFont().deriveFont(Font.BOLD, 13.5f)); + titleIcon = new JLabel(""); + titleMessage = new DialogTextArea(DEFAULT_MESSAGE); + titleMessage.setMargin(new Insets(5, 10, 10, 10)); + // titleMessage.setMinimumSize(new Dimension(0, 30)); + titleMessage.setFont(titleMessage.getFont().deriveFont(11f)); + titleMessage.setEditable(false); + titleMessage.setFocusable(false); + // titleMessage.setFont(titleLabel.getFont().deriveFont(Font.PLAIN, + // 12f)); + + // column range + columnLabel = new JLabel(SpreadsheetImportUIText + .getString("SpreadsheetImportConfigView.columnSectionLabel")); + + JsonNode columnRange = newConfiguration.get("columnRange"); + columnFromValue = new JTextField(new UpperCaseDocument(), SpreadsheetUtils.getColumnLabel(columnRange.get("start").intValue()), 4); + columnFromValue.setMinimumSize(columnFromValue.getPreferredSize()); + columnToValue = new JTextField(new UpperCaseDocument(), SpreadsheetUtils.getColumnLabel(columnRange.get("end").intValue()), 4); + columnToValue.setMinimumSize(columnToValue.getPreferredSize()); + + columnFromValue.getDocument().addDocumentListener(new DocumentListener() { + public void changedUpdate(DocumentEvent e) { + } + + public void insertUpdate(DocumentEvent e) { + checkValue(columnFromValue.getText()); + } + + public void removeUpdate(DocumentEvent e) { + checkValue(columnFromValue.getText()); + } + + private void checkValue(String text) { + if (text.trim().equals("")) { + addErrorMessage(EMPTY_FROM_COLUMN_ERROR_MESSAGE); + } else if (text.trim().matches("[A-Za-z]+")) { + String fromColumn = columnFromValue.getText().toUpperCase(); + String toColumn = columnToValue.getText().toUpperCase(); + int fromColumnIndex = SpreadsheetUtils.getColumnIndex(fromColumn); + int toColumnIndex = SpreadsheetUtils.getColumnIndex(toColumn); + if (checkColumnRange(fromColumnIndex, toColumnIndex)) { + columnMappingTableModel.setFromColumn(fromColumnIndex); + columnMappingTableModel.setToColumn(toColumnIndex); + newConfiguration.set("columnRange", newConfiguration.objectNode().put("start", fromColumnIndex).put("end", toColumnIndex)); + validatePortNames(); + } + removeErrorMessage(FROM_COLUMN_ERROR_MESSAGE); + removeErrorMessage(EMPTY_FROM_COLUMN_ERROR_MESSAGE); + } else { + addErrorMessage(FROM_COLUMN_ERROR_MESSAGE); + removeErrorMessage(EMPTY_FROM_COLUMN_ERROR_MESSAGE); + } + } + + }); + + columnToValue.getDocument().addDocumentListener(new DocumentListener() { + public void changedUpdate(DocumentEvent e) { + } + + public void insertUpdate(DocumentEvent e) { + checkValue(columnToValue.getText()); + } + + public void removeUpdate(DocumentEvent e) { + checkValue(columnToValue.getText()); + } + + private void checkValue(String text) { + if (text.trim().equals("")) { + addErrorMessage(EMPTY_TO_COLUMN_ERROR_MESSAGE); + } else if (text.trim().matches("[A-Za-z]+")) { + String fromColumn = columnFromValue.getText().toUpperCase(); + String toColumn = columnToValue.getText().toUpperCase(); + int fromColumnIndex = SpreadsheetUtils.getColumnIndex(fromColumn); + int toColumnIndex = SpreadsheetUtils.getColumnIndex(toColumn); + if (checkColumnRange(fromColumnIndex, toColumnIndex)) { + columnMappingTableModel.setFromColumn(fromColumnIndex); + columnMappingTableModel.setToColumn(toColumnIndex); + newConfiguration.set("columnRange", newConfiguration.objectNode().put("start", fromColumnIndex).put("end", toColumnIndex)); + validatePortNames(); + } + removeErrorMessage(TO_COLUMN_ERROR_MESSAGE); + removeErrorMessage(EMPTY_TO_COLUMN_ERROR_MESSAGE); + + } else { + addErrorMessage(TO_COLUMN_ERROR_MESSAGE); + removeErrorMessage(EMPTY_TO_COLUMN_ERROR_MESSAGE); + } + } + }); + + // row range + rowLabel = new JLabel(SpreadsheetImportUIText.getString("SpreadsheetImportConfigView.rowSectionLabel")); + addDivider(rowLabel, SwingConstants.TOP, false); + + rowSelectAllOption = new JCheckBox(SpreadsheetImportUIText + .getString("SpreadsheetImportConfigView.selectAllRowsOption")); + rowExcludeFirstOption = new JCheckBox(SpreadsheetImportUIText + .getString("SpreadsheetImportConfigView.excludeHeaderRowOption")); + rowIgnoreBlankRows = new JCheckBox(SpreadsheetImportUIText + .getString("SpreadsheetImportConfigView.ignoreBlankRowsOption")); + rowSelectAllOption.setFocusable(false); + rowExcludeFirstOption.setFocusable(false); + + JsonNode rowRange = newConfiguration.get("rowRange"); + rowFromValue = new JTextField(new NumericDocument(), String.valueOf(rowRange.get("start").intValue() + 1), 4); + if (rowRange.get("end").intValue() == -1) { + rowToValue = new JTextField(new NumericDocument(), "", 4); + } else { + rowToValue = new JTextField(new NumericDocument(), String.valueOf(rowRange.get("end").intValue() + 1), 4); + } + rowFromValue.setMinimumSize(rowFromValue.getPreferredSize()); + rowToValue.setMinimumSize(rowToValue.getPreferredSize()); + + if (newConfiguration.get("allRows").booleanValue()) { + rowSelectAllOption.setSelected(true); + rowFromValue.setEditable(false); + rowFromValue.setEnabled(false); + rowToValue.setEditable(false); + rowToValue.setEnabled(false); + } else { + rowExcludeFirstOption.setEnabled(false); + } + rowExcludeFirstOption.setSelected(newConfiguration.get("excludeFirstRow").booleanValue()); + rowIgnoreBlankRows.setSelected(newConfiguration.get("ignoreBlankRows").booleanValue()); + + rowFromValue.getDocument().addDocumentListener(new DocumentListener() { + public void changedUpdate(DocumentEvent e) { + } + + public void insertUpdate(DocumentEvent e) { + checkValue(rowFromValue.getText()); + } + + public void removeUpdate(DocumentEvent e) { + checkValue(rowFromValue.getText()); + } + + private void checkValue(String text) { + if (text.trim().equals("")) { + addErrorMessage(EMPTY_FROM_ROW_ERROR_MESSAGE); + } else if (text.trim().matches("[1-9][0-9]*")) { + checkRowRange(rowFromValue.getText(), rowToValue.getText()); + int fromRow = Integer.parseInt(rowFromValue.getText()); + ((ObjectNode) newConfiguration.get("rowRange")).put("start", fromRow - 1); + removeErrorMessage(FROM_ROW_ERROR_MESSAGE); + removeErrorMessage(EMPTY_FROM_ROW_ERROR_MESSAGE); + } else { + addErrorMessage(FROM_ROW_ERROR_MESSAGE); + removeErrorMessage(EMPTY_FROM_ROW_ERROR_MESSAGE); + } + } + }); + + rowToValue.getDocument().addDocumentListener(new DocumentListener() { + public void changedUpdate(DocumentEvent e) { + } + + public void insertUpdate(DocumentEvent e) { + checkValue(rowToValue.getText()); + } + + public void removeUpdate(DocumentEvent e) { + checkValue(rowToValue.getText()); + } + + private void checkValue(String text) { + if (text.trim().equals("")) { + ((ObjectNode) newConfiguration.get("rowRange")).put("end", -1); + removeErrorMessage(TO_ROW_ERROR_MESSAGE); + removeErrorMessage(INCONSISTENT_ROW_MESSAGE); + } else if (text.trim().matches("[0-9]+")) { + checkRowRange(rowFromValue.getText(), rowToValue.getText()); + int toRow = Integer.parseInt(rowToValue.getText()); + ((ObjectNode) newConfiguration.get("rowRange")).put("end", toRow - 1); + removeErrorMessage(TO_ROW_ERROR_MESSAGE); + } else { + addErrorMessage(TO_ROW_ERROR_MESSAGE); + } + } + }); + + rowSelectAllOption.addItemListener(new ItemListener() { + public void itemStateChanged(ItemEvent e) { + if (e.getStateChange() == ItemEvent.SELECTED) { + newConfiguration.put("allRows", true); + rowExcludeFirstOption.setEnabled(true); + if (rowExcludeFirstOption.isSelected()) { + rowFromValue.setText("2"); + } else { + rowFromValue.setText("1"); + } + rowToValue.setText(""); + rowFromValue.setEditable(false); + rowFromValue.setEnabled(false); + rowToValue.setEditable(false); + rowToValue.setEnabled(false); + } else { + newConfiguration.put("allRows", false); + rowExcludeFirstOption.setEnabled(false); + rowFromValue.setEditable(true); + rowFromValue.setEnabled(true); + rowToValue.setEditable(true); + rowToValue.setEnabled(true); + } + } + }); + + rowExcludeFirstOption.addItemListener(new ItemListener() { + public void itemStateChanged(ItemEvent e) { + if (e.getStateChange() == ItemEvent.SELECTED) { + newConfiguration.put("excludeFirstRow", true); + rowFromValue.setText("2"); + ((ObjectNode) newConfiguration.get("rowRange")).put("start", 1); + } else { + newConfiguration.put("excludeFirstRow", false); + rowFromValue.setText("1"); + ((ObjectNode) newConfiguration.get("rowRange")).put("start", 0); + } + } + }); + + rowIgnoreBlankRows.addItemListener(new ItemListener() { + public void itemStateChanged(ItemEvent e) { + newConfiguration.put("ignoreBlankRows", e.getStateChange() == ItemEvent.SELECTED); + } + }); + + // empty cells + emptyCellLabel = new JLabel(SpreadsheetImportUIText + .getString("SpreadsheetImportConfigView.emptyCellSectionLabel")); + addDivider(emptyCellLabel, SwingConstants.TOP, false); + + emptyCellButtonGroup = new ButtonGroup(); + emptyCellEmptyStringOption = new JRadioButton(SpreadsheetImportUIText + .getString("SpreadsheetImportConfigView.emptyStringOption")); + emptyCellUserDefinedOption = new JRadioButton(SpreadsheetImportUIText + .getString("SpreadsheetImportConfigView.userDefinedOption")); + emptyCellErrorValueOption = new JRadioButton(SpreadsheetImportUIText + .getString("SpreadsheetImportConfigView.generateErrorOption")); + emptyCellEmptyStringOption.setFocusable(false); + emptyCellUserDefinedOption.setFocusable(false); + emptyCellErrorValueOption.setFocusable(false); + + emptyCellUserDefinedValue = new JTextField(newConfiguration.get("emptyCellValue").textValue()); + + emptyCellButtonGroup.add(emptyCellEmptyStringOption); + emptyCellButtonGroup.add(emptyCellUserDefinedOption); + emptyCellButtonGroup.add(emptyCellErrorValueOption); + + if (newConfiguration.get("emptyCellPolicy").textValue().equals("GENERATE_ERROR")) { + emptyCellErrorValueOption.setSelected(true); + emptyCellUserDefinedValue.setEnabled(false); + emptyCellUserDefinedValue.setEditable(false); + } else if (newConfiguration.get("emptyCellPolicy").textValue().equals("EMPTY_STRING")) { + emptyCellEmptyStringOption.setSelected(true); + emptyCellUserDefinedValue.setEnabled(false); + emptyCellUserDefinedValue.setEditable(false); + } else { + emptyCellUserDefinedOption.setSelected(true); + emptyCellUserDefinedValue.setText(newConfiguration.get("emptyCellValue").textValue()); + emptyCellUserDefinedValue.setEnabled(true); + emptyCellUserDefinedValue.setEditable(true); + } + + emptyCellEmptyStringOption.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent e) { + newConfiguration.put("emptyCellPolicy", "EMPTY_STRING"); + emptyCellUserDefinedValue.setEnabled(false); + emptyCellUserDefinedValue.setEditable(false); + } + }); + emptyCellUserDefinedOption.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent e) { + newConfiguration.put("emptyCellPolicy", "USER_DEFINED"); + emptyCellUserDefinedValue.setEnabled(true); + emptyCellUserDefinedValue.setEditable(true); + emptyCellUserDefinedValue.requestFocusInWindow(); + } + }); + emptyCellErrorValueOption.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent e) { + newConfiguration.put("emptyCellPolicy", "GENERATE_ERROR"); + emptyCellUserDefinedValue.setEnabled(false); + emptyCellUserDefinedValue.setEditable(false); + } + }); + + emptyCellUserDefinedValue.getDocument().addDocumentListener(new DocumentListener() { + public void changedUpdate(DocumentEvent e) { + newConfiguration.put("emptyCellValue", emptyCellUserDefinedValue.getText()); + } + + public void insertUpdate(DocumentEvent e) { + newConfiguration.put("emptyCellValue", emptyCellUserDefinedValue.getText()); + } + + public void removeUpdate(DocumentEvent e) { + newConfiguration.put("emptyCellValue", emptyCellUserDefinedValue.getText()); + } + }); + + // column mappings + columnMappingLabel = new JLabel(SpreadsheetImportUIText + .getString("SpreadsheetImportConfigView.columnMappingSectionLabel")); + addDivider(columnMappingLabel, SwingConstants.TOP, false); + + Map<String, String> columnToPortMapping = new HashMap<>(); + if (newConfiguration.has("columnNames")) { + for (JsonNode columnName : newConfiguration.get("columnNames")) { + columnToPortMapping.put(columnName.get("column").textValue(), columnName.get("port").textValue()); + } + } + columnMappingTableModel = new SpreadsheetImportConfigTableModel(columnFromValue.getText(), + columnToValue.getText(), columnToPortMapping); + + columnMappingTable = new JTable(); + columnMappingTable.setRowSelectionAllowed(false); + columnMappingTable.getTableHeader().setReorderingAllowed(false); + columnMappingTable.setGridColor(Color.LIGHT_GRAY); + // columnMappingTable.setFocusable(false); + + columnMappingTable.setColumnModel(new DefaultTableColumnModel() { + public TableColumn getColumn(int columnIndex) { + TableColumn column = super.getColumn(columnIndex); + if (columnIndex == 0) { + column.setMaxWidth(100); + } + return column; + } + }); + + TableCellEditor defaultEditor = columnMappingTable.getDefaultEditor(String.class); + if (defaultEditor instanceof DefaultCellEditor) { + DefaultCellEditor defaultCellEditor = (DefaultCellEditor) defaultEditor; + defaultCellEditor.setClickCountToStart(1); + Component editorComponent = defaultCellEditor.getComponent(); + if (editorComponent instanceof JTextComponent) { + final JTextComponent textField = (JTextComponent) editorComponent; + textField.getDocument().addDocumentListener(new DocumentListener() { + public void changedUpdate(DocumentEvent e) { + updateModel(textField.getText()); + } + + public void insertUpdate(DocumentEvent e) { + updateModel(textField.getText()); + } + + public void removeUpdate(DocumentEvent e) { + updateModel(textField.getText()); + } + + private void updateModel(String text) { + int row = columnMappingTable.getEditingRow(); + int column = columnMappingTable.getEditingColumn(); + columnMappingTableModel.setValueAt(text, row, column); + + ArrayNode columnNames = newConfiguration.arrayNode(); + Map<String, String> columnToPortMapping = columnMappingTableModel.getColumnToPortMapping(); + for (Entry<String,String> entry : columnToPortMapping.entrySet()) { + columnNames.add(newConfiguration.objectNode().put("column", entry.getKey()).put("port", entry.getValue())); + } + newConfiguration.put("columnNames", columnNames); + validatePortNames(); + } + + }); + } + } + + columnMappingTable.setModel(columnMappingTableModel); + + // output format + outputFormatLabel = new JLabel(SpreadsheetImportUIText + .getString("SpreadsheetImportConfigView.outputFormatSectionLabel")); + + outputFormatMultiplePort = new JRadioButton(SpreadsheetImportUIText + .getString("SpreadsheetImportConfigView.multiplePortOption")); + outputFormatSinglePort = new JRadioButton(SpreadsheetImportUIText + .getString("SpreadsheetImportConfigView.singlePortOption")); + outputFormatMultiplePort.setFocusable(false); + outputFormatSinglePort.setFocusable(false); + + outputFormatDelimiterLabel = new JLabel(SpreadsheetImportUIText + .getString("SpreadsheetImportConfigView.userDefinedCsvDelimiter")); + outputFormatDelimiter = new JTextField(newConfiguration.get("csvDelimiter").textValue(), 5); + + outputFormatButtonGroup = new ButtonGroup(); + outputFormatButtonGroup.add(outputFormatMultiplePort); + outputFormatButtonGroup.add(outputFormatSinglePort); + + if (newConfiguration.get("outputFormat").textValue().equals("PORT_PER_COLUMN")) { + outputFormatMultiplePort.setSelected(true); + outputFormatDelimiterLabel.setEnabled(false); + outputFormatDelimiter.setEnabled(false); + } else { + outputFormatSinglePort.setSelected(true); + columnMappingLabel.setEnabled(false); + enableTable(columnMappingTable, false); + } + + outputFormatMultiplePort.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent e) { + outputFormatDelimiterLabel.setEnabled(false); + outputFormatDelimiter.setEnabled(false); + columnMappingLabel.setEnabled(true); + enableTable(columnMappingTable, true); + newConfiguration.put("outputFormat", "PORT_PER_COLUMN"); + } + }); + outputFormatSinglePort.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent e) { + outputFormatDelimiterLabel.setEnabled(true); + outputFormatDelimiter.setEnabled(true); + columnMappingLabel.setEnabled(false); + enableTable(columnMappingTable, false); + newConfiguration.put("outputFormat", "SINGLE_PORT"); + } + + }); + outputFormatDelimiter.getDocument().addDocumentListener(new DocumentListener() { + public void changedUpdate(DocumentEvent e) { + handleUpdate(); + } + + public void insertUpdate(DocumentEvent e) { + handleUpdate(); + } + + public void removeUpdate(DocumentEvent e) { + handleUpdate(); + } + + private void handleUpdate() { + String text = null; + try { + text = StringEscapeUtils.unescapeJava(outputFormatDelimiter.getText()); + } catch (RuntimeException re) {} + if (text == null || text.length() == 0) { + newConfiguration.put("csvDelimiter", ","); + } else { + newConfiguration.put("csvDelimiter", text.substring(0, 1)); + } + } + + }); + + // buttons + nextButton = new JButton(SpreadsheetImportUIText.getString("SpreadsheetImportConfigView.nextButton")); + nextButton.setFocusable(false); + nextButton.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent e) { + backButton.setVisible(true); + nextButton.setVisible(false); + cardLayout.last(contentPanel); + } + }); + + backButton = new JButton(SpreadsheetImportUIText.getString("SpreadsheetImportConfigView.backButton")); + backButton.setFocusable(false); + backButton.setVisible(false); + backButton.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent e) { + nextButton.setVisible(true); + backButton.setVisible(false); + cardLayout.first(contentPanel); + } + }); + + buttonPanel = new JPanel(new FlowLayout(FlowLayout.RIGHT)); + addDivider(buttonPanel, SwingConstants.TOP, true); + + removeAll(); + layoutPanel(); + } + + @Override + public void noteConfiguration() { + setJson(newConfiguration); + configureInputPorts(serviceRegistry); + configureOutputPorts(serviceRegistry); + } + + @Override + public boolean checkValues() { + return errorMessages.isEmpty(); + } + + private void layoutPanel() { + setPreferredSize(new Dimension(450, 400)); + setLayout(new BorderLayout()); + + page1 = new JPanel(new GridBagLayout()); + page2 = new JPanel(new GridBagLayout()); + + contentPanel = new JPanel(cardLayout); + contentPanel.add(page1, "page1"); + contentPanel.add(page2, "page2"); + add(contentPanel, BorderLayout.CENTER); + + // title + titlePanel.setBorder(new CompoundBorder(titlePanel.getBorder(), new EmptyBorder(10, 10, 0, 10))); + add(titlePanel, BorderLayout.NORTH); + titlePanel.add(titleLabel, BorderLayout.NORTH); + titlePanel.add(titleIcon, BorderLayout.WEST); + titlePanel.add(titleMessage, BorderLayout.CENTER); + + GridBagConstraints c = new GridBagConstraints(); + c.anchor = GridBagConstraints.WEST; + c.fill = GridBagConstraints.HORIZONTAL; + c.weightx = 1; + c.gridx = 0; + c.gridwidth = GridBagConstraints.REMAINDER; + + // column range + c.insets = new Insets(10, 10, 0, 10); + page1.add(columnLabel, c); + + c.insets = new Insets(10, 25, 0, 0); + c.gridwidth = 1; + c.weightx = 0; + page1.add(new JLabel(SpreadsheetImportUIText.getString("SpreadsheetImportConfigView.from")), c); + c.insets = new Insets(10, 0, 0, 0); + c.gridx = 1; + page1.add(columnFromValue, c); + c.gridx = 2; + page1.add(new JLabel(SpreadsheetImportUIText.getString("SpreadsheetImportConfigView.to")), c); + c.gridx = 3; + page1.add(columnToValue, c); + + c.gridx = 0; + c.weightx = 1; + c.insets = new Insets(10, 10, 0, 10); + c.gridwidth = GridBagConstraints.REMAINDER; + + // row range + page1.add(rowLabel, c); + + c.insets = new Insets(10, 25, 0, 0); + c.gridwidth = 1; + c.gridx = 0; + c.weightx = 0; + page1.add(new JLabel(SpreadsheetImportUIText.getString("SpreadsheetImportConfigView.from")), c); + c.insets = new Insets(10, 0, 0, 0); + c.gridx = 1; + page1.add(rowFromValue, c); + c.gridx = 2; + page1.add(new JLabel(SpreadsheetImportUIText.getString("SpreadsheetImportConfigView.to")), c); + c.gridx = 3; + page1.add(rowToValue, c); + c.gridx = 4; + page1.add(rowSelectAllOption, c); + c.gridx = 5; + c.gridwidth = GridBagConstraints.REMAINDER; + c.insets = new Insets(10, 0, 0, 10); + page1.add(rowExcludeFirstOption, c); + c.insets = new Insets(10, 25, 0, 0); + c.gridx = 0; + page1.add(rowIgnoreBlankRows, c); + + c.gridx = 0; + + // empty cells + c.insets = new Insets(10, 10, 10, 10); + page1.add(emptyCellLabel, c); + + c.insets = new Insets(0, 25, 0, 10); + page1.add(emptyCellEmptyStringOption, c); + JPanel userDefinedPanel = new JPanel(new BorderLayout()); + userDefinedPanel.add(emptyCellUserDefinedOption, BorderLayout.WEST); + userDefinedPanel.add(emptyCellUserDefinedValue, BorderLayout.CENTER); + page1.add(userDefinedPanel, c); + c.weighty = 1; + c.anchor = GridBagConstraints.NORTHWEST; + page1.add(emptyCellErrorValueOption, c); + + // output format + c.insets = new Insets(10, 10, 10, 10); + c.weighty = 0; + c.weightx = 1; + page2.add(outputFormatLabel, c); + + c.insets = new Insets(0, 25, 0, 10); + page2.add(outputFormatMultiplePort, c); + page2.add(outputFormatSinglePort, c); + + c.insets = new Insets(0, 50, 0, 10); + JPanel outputFormatDelimiterPanel = new JPanel(new FlowLayout(FlowLayout.LEFT)); + outputFormatDelimiterPanel.add(outputFormatDelimiterLabel); + outputFormatDelimiterPanel.add(outputFormatDelimiter); + page2.add(outputFormatDelimiterPanel, c); + + // column mapping + c.insets = new Insets(10, 10, 0, 10); + page2.add(columnMappingLabel, c); + + c.insets = new Insets(10, 10, 10, 10); + c.fill = GridBagConstraints.BOTH; + c.weighty = 1; + page2.add(new JScrollPane(columnMappingTable), c); + + buttonPanel.add(backButton); + buttonPanel.add(nextButton); + add(buttonPanel, BorderLayout.SOUTH); + } + + /** + * Displays the message with no icon. + * + * @param message + * the message to display + */ + public void setMessage(String message) { + titleIcon.setIcon(null); + titleMessage.setText(message); + } + + /** + * Adds the message to the top of the warning message stack. If the message is already in the + * stack it is moved to the top. If there are no error messages the message is displayed. + * + * @param message + * the warning message to add + */ + public void addWarningMessage(String message) { + if (warningMessages.contains(message)) { + warningMessages.remove(message); + } + warningMessages.push(message); + if (errorMessages.isEmpty()) { + setWarningMessage(message); + } + } + + /** + * Removes the message from the warning message stack. If there are no error messages the next + * warning message is displayed. If there are no warning messages the default message is + * displayed. + * + * @param message + * the warning message to remove + */ + public void removeWarningMessage(String message) { + warningMessages.remove(message); + if (errorMessages.isEmpty()) { + if (warningMessages.isEmpty()) { + setMessage(DEFAULT_MESSAGE); + } else { + setWarningMessage(warningMessages.peek()); + } + } + } + + /** + * Displays the message and a warning icon. + * + * @param message + * the warning message to display + */ + public void setWarningMessage(String message) { + titleIcon.setIcon(Icons.warningIcon); + titleMessage.setText(message); + } + + /** + * Adds the message to the top of the error message stack. If the message is already in the + * stack it is moved to the top. The message is then displayed. + * + * @param message + * the error message to add + */ + public void addErrorMessage(String message) { + if (errorMessages.contains(message)) { + errorMessages.remove(message); + } + errorMessages.push(message); + setErrorMessage(message); + } + + /** + * Removes the message from the error message stack and displays the next error message. If + * there are no error messages the next warning message is displayed. If there are no warning + * messages the default message is displayed. + * + * @param message + * the error message to remove + */ + public void removeErrorMessage(String message) { + errorMessages.remove(message); + if (errorMessages.isEmpty()) { + if (warningMessages.isEmpty()) { + setMessage(DEFAULT_MESSAGE); + } else { + setWarningMessage(warningMessages.peek()); + } + } else { + setErrorMessage(errorMessages.peek()); + } + } + + /** + * Displays the message and an error icon. + * + * @param message + * the error message to display + */ + public void setErrorMessage(String message) { + titleIcon.setIcon(Icons.severeIcon); + titleMessage.setText(message); + } + + protected boolean validatePortNames() { + boolean isValid = true; + Range columnRange = SpreadsheetUtils.getRange(newConfiguration.get("columnRange")); + Map<String, String> mapping = new HashMap<>(); + if (newConfiguration.has("columnNames")) { + for (JsonNode columnName : newConfiguration.get("columnNames")) { + mapping.put(columnName.get("column").textValue(), columnName.get("port").textValue()); + } + } + Set<String> usedNames = new HashSet<String>(); + for (Entry<String, String> entry : mapping.entrySet()) { + if (columnRange.contains(SpreadsheetUtils.getColumnIndex(entry.getKey()))) { + String portName = entry.getValue(); + if (!usedNames.add(portName)) { + isValid = false; + break; + } + if (portName.matches("[A-Z]+")) { + if (!mapping.containsKey(portName)) { + int columnIndex = SpreadsheetUtils.getColumnIndex(portName); + if (columnRange.contains(columnIndex)) { + isValid = false; + break; + } + } + } + } + } + if (isValid) { + removeErrorMessage(DUPLICATE_PORT_NAME_ERROR_MESSAGE); + } else { + addErrorMessage(DUPLICATE_PORT_NAME_ERROR_MESSAGE); + } + return isValid; + } + + protected boolean checkRowRange(String from, String to) { + boolean result = false; + try { + int fromRow = Integer.parseInt(from); + int toRow = Integer.parseInt(to); + if (toRow < fromRow) { + addErrorMessage(INCONSISTENT_ROW_MESSAGE); + } else { + removeErrorMessage(INCONSISTENT_ROW_MESSAGE); + result = true; + } + } catch (NumberFormatException e) { + logger.warn("Problem checking row range", e); + } + return result; + } + + protected boolean checkColumnRange(int fromColumn, int toColumn) { + boolean result = false; + if (toColumn < fromColumn) { + addErrorMessage(INCONSISTENT_COLUMN_MESSAGE); + } else { + removeErrorMessage(INCONSISTENT_COLUMN_MESSAGE); + result = true; + } + return result; + } + + /** + * Adds a light gray or etched border to the top or bottom of a JComponent. + * + * @param component + */ + protected void addDivider(JComponent component, final int position, final boolean etched) { + component.setBorder(new Border() { + private final Color borderColor = new Color(.6f, .6f, .6f); + + public Insets getBorderInsets(Component c) { + if (position == SwingConstants.TOP) { + return new Insets(5, 0, 0, 0); + } else { + return new Insets(0, 0, 5, 0); + } + } + + public boolean isBorderOpaque() { + return false; + } + + public void paintBorder(Component c, Graphics g, int x, int y, int width, int height) { + if (position == SwingConstants.TOP) { + if (etched) { + g.setColor(borderColor); + g.drawLine(x, y, x + width, y); + g.setColor(Color.WHITE); + g.drawLine(x, y + 1, x + width, y + 1); + } else { + g.setColor(Color.LIGHT_GRAY); + g.drawLine(x, y, x + width, y); + } + } else { + if (etched) { + g.setColor(borderColor); + g.drawLine(x, y + height - 2, x + width, y + height - 2); + g.setColor(Color.WHITE); + g.drawLine(x, y + height - 1, x + width, y + height - 1); + } else { + g.setColor(Color.LIGHT_GRAY); + g.drawLine(x, y + height - 1, x + width, y + height - 1); + } + } + } + + }); + } + + private void enableTable(JTable table, boolean enabled) { + table.setEnabled(enabled); + Component editor = table.getEditorComponent(); + if (editor != null) { + editor.setEnabled(enabled); + } + if (enabled) { + table.setForeground(Color.BLACK); + table.getTableHeader().setForeground(Color.BLACK); + } else { + table.setForeground(Color.LIGHT_GRAY); + table.getTableHeader().setForeground(Color.LIGHT_GRAY); + } + } + + static class UpperCaseDocument extends PlainDocument { + @Override + public void replace(int offset, int length, String text, AttributeSet attrs) throws BadLocationException { + if (text.matches("[A-Za-z]+")) { + text = text.toUpperCase(); + super.replace(offset, length, text, attrs); + } + } + } + + static class NumericDocument extends PlainDocument { + @Override + public void replace(int offset, int length, String text, AttributeSet attrs) throws BadLocationException { + if (text.length() == 0 || text.matches("[0-9]+")) { + text = text.toUpperCase(); + super.replace(offset, length, text, attrs); + } + } + } + + /** + * Main method for testing the panel. + * + * @param args + * @throws ActivityConfigurationException + */ +// public static void main(String[] args) throws ActivityConfigurationException { +// final JFrame frame = new JFrame(); +// SpreadsheetImportActivity activity = new SpreadsheetImportActivity(); +// activity.configure(new SpreadsheetImportConfiguration()); +// final SpreadsheetImportConfigView config = new SpreadsheetImportConfigView(activity); +// config.setOkAction(new AbstractAction("Finish") { +// public void actionPerformed(ActionEvent arg0) { +// Range columnRange = config.getConfiguration().getColumnRange(); +// String fromColumn = SpreadsheetUtils.getColumnLabel(columnRange.getStart()); +// String toColumn = SpreadsheetUtils.getColumnLabel(columnRange.getEnd()); +// System.out.printf("%s (%s) - %s (%s)", fromColumn, columnRange.getStart(), +// toColumn, columnRange.getEnd()); +// frame.setVisible(false); +// frame.dispose(); +// } +// }); +// config.setCancelAction(new AbstractAction("Cancel") { +// public void actionPerformed(ActionEvent arg0) { +// frame.setVisible(false); +// frame.dispose(); +// } +// }); +// frame.add(config); +// frame.pack(); +// frame.setVisible(true); +// } + +}
http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench-common-activities/blob/163747de/taverna-spreadsheet-import-activity-ui/src/main/java/org/apache/taverna/activities/spreadsheet/views/SpreadsheetImportContextualView.java ---------------------------------------------------------------------- diff --git a/taverna-spreadsheet-import-activity-ui/src/main/java/org/apache/taverna/activities/spreadsheet/views/SpreadsheetImportContextualView.java b/taverna-spreadsheet-import-activity-ui/src/main/java/org/apache/taverna/activities/spreadsheet/views/SpreadsheetImportContextualView.java new file mode 100644 index 0000000..b7f3121 --- /dev/null +++ b/taverna-spreadsheet-import-activity-ui/src/main/java/org/apache/taverna/activities/spreadsheet/views/SpreadsheetImportContextualView.java @@ -0,0 +1,120 @@ +/* +* Licensed to the Apache Software Foundation (ASF) under one +* or more contributor license agreements. See the NOTICE file +* distributed with this work for additional information +* regarding copyright ownership. The ASF licenses this file +* to you under the Apache License, Version 2.0 (the +* "License"); you may not use this file except in compliance +* with the License. You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, +* software distributed under the License is distributed on an +* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +* KIND, either express or implied. See the License for the +* specific language governing permissions and limitations +* under the License. +*/ + +package org.apache.taverna.activities.spreadsheet.views; + +import java.awt.Frame; + +import javax.swing.Action; + +import org.apache.taverna.activities.spreadsheet.actions.SpreadsheetImportActivityConfigurationAction; +import org.apache.taverna.activities.spreadsheet.il8n.SpreadsheetImportUIText; +import org.apache.taverna.activities.spreadsheet.servicedescriptions.SpreadsheetImportActivityIcon; +import org.apache.taverna.servicedescriptions.ServiceDescriptionRegistry; +import org.apache.taverna.workbench.activityicons.ActivityIconManager; +import org.apache.taverna.workbench.configuration.colour.ColourManager; +import org.apache.taverna.workbench.edits.EditManager; +import org.apache.taverna.workbench.file.FileManager; +import org.apache.taverna.workbench.ui.actions.activity.HTMLBasedActivityContextualView; +import org.apache.taverna.commons.services.ServiceRegistry; +import org.apache.taverna.scufl2.api.activity.Activity; +import org.apache.taverna.scufl2.api.port.InputActivityPort; +import org.apache.taverna.scufl2.api.port.OutputActivityPort; + +/** + * A simple non editable HTML table view over a {@link SpreadsheetImportActivity}. Clicking on the + * configure button shows the editable {@link SpreadsheetImportConfigView} + * + * @author David Withers + */ +public class SpreadsheetImportContextualView extends HTMLBasedActivityContextualView { + + private static final long serialVersionUID = 1L; + private final EditManager editManager; + private final FileManager fileManager; + private final ActivityIconManager activityIconManager; + private final ServiceDescriptionRegistry serviceDescriptionRegistry; + private final ServiceRegistry serviceRegistry; + + public SpreadsheetImportContextualView(Activity activity, EditManager editManager, + FileManager fileManager, ActivityIconManager activityIconManager, + ColourManager colourManager, ServiceDescriptionRegistry serviceDescriptionRegistry, ServiceRegistry serviceRegistry) { + super(activity, colourManager); + this.editManager = editManager; + this.fileManager = fileManager; + this.activityIconManager = activityIconManager; + this.serviceDescriptionRegistry = serviceDescriptionRegistry; + this.serviceRegistry = serviceRegistry; + } + + @Override + protected String getRawTableRowsHtml() { + StringBuilder html = new StringBuilder(); + html.append("<tr><th>"); + html.append(SpreadsheetImportUIText + .getString("SpreadsheetImportContextualView.inputPortName")); + html.append("</th><th>"); + html.append(SpreadsheetImportUIText.getString("SpreadsheetImportContextualView.depth")); + html.append("</th></tr>"); + for (InputActivityPort port : getActivity().getInputPorts()) { + html.append("<tr><td>"); + html.append(port.getName()); + html.append("</td><td>"); + html.append(port.getDepth()); + html.append("</td></tr>"); + } + html.append("<tr><th>"); + html.append(SpreadsheetImportUIText + .getString("SpreadsheetImportContextualView.outputPortName")); + html.append("</th><th>"); + html.append(SpreadsheetImportUIText.getString("SpreadsheetImportContextualView.depth")); + html.append("</th></tr>"); + for (OutputActivityPort port : getActivity().getOutputPorts()) { + html.append("<tr><td>"); + html.append(port.getName()); + html.append("</td><td>"); + html.append(port.getDepth()); + html.append("</td></tr>"); + } + return html.toString(); + } + + @Override + public String getViewTitle() { + return SpreadsheetImportUIText.getString("SpreadsheetImportContextualView.activityName"); + } + + @Override + public Action getConfigureAction(Frame owner) { + return new SpreadsheetImportActivityConfigurationAction( + getActivity(), owner, editManager, fileManager, + activityIconManager, serviceDescriptionRegistry, serviceRegistry); + } + + @Override + public String getBackgroundColour() { + return SpreadsheetImportActivityIcon.SPREADSHEET_COLOUR_HTML; + } + + @Override + public int getPreferredPosition() { + return 100; + } + +} http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench-common-activities/blob/163747de/taverna-spreadsheet-import-activity-ui/src/main/java/org/apache/taverna/activities/spreadsheet/views/SpreadsheetImportContextualViewFactory.java ---------------------------------------------------------------------- diff --git a/taverna-spreadsheet-import-activity-ui/src/main/java/org/apache/taverna/activities/spreadsheet/views/SpreadsheetImportContextualViewFactory.java b/taverna-spreadsheet-import-activity-ui/src/main/java/org/apache/taverna/activities/spreadsheet/views/SpreadsheetImportContextualViewFactory.java new file mode 100644 index 0000000..517dfd2 --- /dev/null +++ b/taverna-spreadsheet-import-activity-ui/src/main/java/org/apache/taverna/activities/spreadsheet/views/SpreadsheetImportContextualViewFactory.java @@ -0,0 +1,86 @@ +/* +* Licensed to the Apache Software Foundation (ASF) under one +* or more contributor license agreements. See the NOTICE file +* distributed with this work for additional information +* regarding copyright ownership. The ASF licenses this file +* to you under the Apache License, Version 2.0 (the +* "License"); you may not use this file except in compliance +* with the License. You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, +* software distributed under the License is distributed on an +* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +* KIND, either express or implied. See the License for the +* specific language governing permissions and limitations +* under the License. +*/ + +package org.apache.taverna.activities.spreadsheet.views; + +import java.util.Arrays; +import java.util.List; + +import org.apache.taverna.activities.spreadsheet.servicedescriptions.SpreadsheetImportTemplateService; +import org.apache.taverna.servicedescriptions.ServiceDescriptionRegistry; +import org.apache.taverna.workbench.activityicons.ActivityIconManager; +import org.apache.taverna.workbench.configuration.colour.ColourManager; +import org.apache.taverna.workbench.edits.EditManager; +import org.apache.taverna.workbench.file.FileManager; +import org.apache.taverna.workbench.ui.views.contextualviews.ContextualView; +import org.apache.taverna.workbench.ui.views.contextualviews.activity.ContextualViewFactory; +import org.apache.taverna.commons.services.ServiceRegistry; +import org.apache.taverna.scufl2.api.activity.Activity; + +/** + * Factory for creating contextual a view of the SpreadsheetImport Activity + * + * @author David Withers + */ +public class SpreadsheetImportContextualViewFactory implements ContextualViewFactory<Activity> { + + private EditManager editManager; + private FileManager fileManager; + private ActivityIconManager activityIconManager; + private ColourManager colourManager; + private ServiceDescriptionRegistry serviceDescriptionRegistry; + private ServiceRegistry serviceRegistry; + + public boolean canHandle(Object object) { + return object instanceof Activity + && ((Activity) object).getType().equals( + SpreadsheetImportTemplateService.ACTIVITY_TYPE); + } + + public List<ContextualView> getViews(Activity activity) { + return Arrays.asList(new ContextualView[] { new SpreadsheetImportContextualView(activity, + editManager, fileManager, activityIconManager, colourManager, + serviceDescriptionRegistry, serviceRegistry) }); + } + + public void setEditManager(EditManager editManager) { + this.editManager = editManager; + } + + public void setFileManager(FileManager fileManager) { + this.fileManager = fileManager; + } + + public void setActivityIconManager(ActivityIconManager activityIconManager) { + this.activityIconManager = activityIconManager; + } + + public void setColourManager(ColourManager colourManager) { + this.colourManager = colourManager; + } + + public void setServiceDescriptionRegistry(ServiceDescriptionRegistry serviceDescriptionRegistry) { + this.serviceDescriptionRegistry = serviceDescriptionRegistry; + } + + public void setServiceRegistry(ServiceRegistry serviceRegistry) { + this.serviceRegistry = serviceRegistry; + } + +} http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench-common-activities/blob/163747de/taverna-spreadsheet-import-activity-ui/src/main/resources/META-INF/services/net.sf.taverna.t2.servicedescriptions.ServiceDescriptionProvider ---------------------------------------------------------------------- diff --git a/taverna-spreadsheet-import-activity-ui/src/main/resources/META-INF/services/net.sf.taverna.t2.servicedescriptions.ServiceDescriptionProvider b/taverna-spreadsheet-import-activity-ui/src/main/resources/META-INF/services/net.sf.taverna.t2.servicedescriptions.ServiceDescriptionProvider deleted file mode 100644 index b1628b6..0000000 --- a/taverna-spreadsheet-import-activity-ui/src/main/resources/META-INF/services/net.sf.taverna.t2.servicedescriptions.ServiceDescriptionProvider +++ /dev/null @@ -1 +0,0 @@ -net.sf.taverna.t2.activities.spreadsheet.servicedescriptions.SpreadsheetImportTemplateService http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench-common-activities/blob/163747de/taverna-spreadsheet-import-activity-ui/src/main/resources/META-INF/services/net.sf.taverna.t2.ui.menu.MenuComponent ---------------------------------------------------------------------- diff --git a/taverna-spreadsheet-import-activity-ui/src/main/resources/META-INF/services/net.sf.taverna.t2.ui.menu.MenuComponent b/taverna-spreadsheet-import-activity-ui/src/main/resources/META-INF/services/net.sf.taverna.t2.ui.menu.MenuComponent deleted file mode 100644 index 6720b04..0000000 --- a/taverna-spreadsheet-import-activity-ui/src/main/resources/META-INF/services/net.sf.taverna.t2.ui.menu.MenuComponent +++ /dev/null @@ -1,3 +0,0 @@ -net.sf.taverna.t2.activities.spreadsheet.menu.SpreadsheetImportAddTemplateAction -net.sf.taverna.t2.activities.spreadsheet.menu.SpreadsheetImportConfigureMenuAction -net.sf.taverna.t2.activities.spreadsheet.menu.SpreadsheetImportAddTemplateMenuAction http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench-common-activities/blob/163747de/taverna-spreadsheet-import-activity-ui/src/main/resources/META-INF/services/net.sf.taverna.t2.workbench.activityicons.ActivityIconSPI ---------------------------------------------------------------------- diff --git a/taverna-spreadsheet-import-activity-ui/src/main/resources/META-INF/services/net.sf.taverna.t2.workbench.activityicons.ActivityIconSPI b/taverna-spreadsheet-import-activity-ui/src/main/resources/META-INF/services/net.sf.taverna.t2.workbench.activityicons.ActivityIconSPI deleted file mode 100644 index 2dd012f..0000000 --- a/taverna-spreadsheet-import-activity-ui/src/main/resources/META-INF/services/net.sf.taverna.t2.workbench.activityicons.ActivityIconSPI +++ /dev/null @@ -1 +0,0 @@ -net.sf.taverna.t2.activities.spreadsheet.servicedescriptions.SpreadsheetImportActivityIcon \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench-common-activities/blob/163747de/taverna-spreadsheet-import-activity-ui/src/main/resources/META-INF/services/net.sf.taverna.t2.workbench.ui.views.contextualviews.activity.ContextualViewFactory ---------------------------------------------------------------------- diff --git a/taverna-spreadsheet-import-activity-ui/src/main/resources/META-INF/services/net.sf.taverna.t2.workbench.ui.views.contextualviews.activity.ContextualViewFactory b/taverna-spreadsheet-import-activity-ui/src/main/resources/META-INF/services/net.sf.taverna.t2.workbench.ui.views.contextualviews.activity.ContextualViewFactory deleted file mode 100644 index 4b9dd11..0000000 --- a/taverna-spreadsheet-import-activity-ui/src/main/resources/META-INF/services/net.sf.taverna.t2.workbench.ui.views.contextualviews.activity.ContextualViewFactory +++ /dev/null @@ -1 +0,0 @@ -net.sf.taverna.t2.activities.spreadsheet.views.SpreadsheetImportContextualViewFactory \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench-common-activities/blob/163747de/taverna-spreadsheet-import-activity-ui/src/main/resources/META-INF/services/org.apache.taverna.servicedescriptions.ServiceDescriptionProvider ---------------------------------------------------------------------- diff --git a/taverna-spreadsheet-import-activity-ui/src/main/resources/META-INF/services/org.apache.taverna.servicedescriptions.ServiceDescriptionProvider b/taverna-spreadsheet-import-activity-ui/src/main/resources/META-INF/services/org.apache.taverna.servicedescriptions.ServiceDescriptionProvider new file mode 100644 index 0000000..f136255 --- /dev/null +++ b/taverna-spreadsheet-import-activity-ui/src/main/resources/META-INF/services/org.apache.taverna.servicedescriptions.ServiceDescriptionProvider @@ -0,0 +1 @@ +org.apache.taverna.activities.spreadsheet.servicedescriptions.SpreadsheetImportTemplateService http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench-common-activities/blob/163747de/taverna-spreadsheet-import-activity-ui/src/main/resources/META-INF/services/org.apache.taverna.ui.menu.MenuComponent ---------------------------------------------------------------------- diff --git a/taverna-spreadsheet-import-activity-ui/src/main/resources/META-INF/services/org.apache.taverna.ui.menu.MenuComponent b/taverna-spreadsheet-import-activity-ui/src/main/resources/META-INF/services/org.apache.taverna.ui.menu.MenuComponent new file mode 100644 index 0000000..88b067a --- /dev/null +++ b/taverna-spreadsheet-import-activity-ui/src/main/resources/META-INF/services/org.apache.taverna.ui.menu.MenuComponent @@ -0,0 +1,3 @@ +org.apache.taverna.activities.spreadsheet.menu.SpreadsheetImportAddTemplateAction +org.apache.taverna.activities.spreadsheet.menu.SpreadsheetImportConfigureMenuAction +org.apache.taverna.activities.spreadsheet.menu.SpreadsheetImportAddTemplateMenuAction http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench-common-activities/blob/163747de/taverna-spreadsheet-import-activity-ui/src/main/resources/META-INF/services/org.apache.taverna.workbench.activityicons.ActivityIconSPI ---------------------------------------------------------------------- diff --git a/taverna-spreadsheet-import-activity-ui/src/main/resources/META-INF/services/org.apache.taverna.workbench.activityicons.ActivityIconSPI b/taverna-spreadsheet-import-activity-ui/src/main/resources/META-INF/services/org.apache.taverna.workbench.activityicons.ActivityIconSPI new file mode 100644 index 0000000..c00719e --- /dev/null +++ b/taverna-spreadsheet-import-activity-ui/src/main/resources/META-INF/services/org.apache.taverna.workbench.activityicons.ActivityIconSPI @@ -0,0 +1 @@ +org.apache.taverna.activities.spreadsheet.servicedescriptions.SpreadsheetImportActivityIcon \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench-common-activities/blob/163747de/taverna-spreadsheet-import-activity-ui/src/main/resources/META-INF/services/org.apache.taverna.workbench.ui.views.contextualviews.activity.ContextualViewFactory ---------------------------------------------------------------------- diff --git a/taverna-spreadsheet-import-activity-ui/src/main/resources/META-INF/services/org.apache.taverna.workbench.ui.views.contextualviews.activity.ContextualViewFactory b/taverna-spreadsheet-import-activity-ui/src/main/resources/META-INF/services/org.apache.taverna.workbench.ui.views.contextualviews.activity.ContextualViewFactory new file mode 100644 index 0000000..f108c98 --- /dev/null +++ b/taverna-spreadsheet-import-activity-ui/src/main/resources/META-INF/services/org.apache.taverna.workbench.ui.views.contextualviews.activity.ContextualViewFactory @@ -0,0 +1 @@ +org.apache.taverna.activities.spreadsheet.views.SpreadsheetImportContextualViewFactory \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench-common-activities/blob/163747de/taverna-spreadsheet-import-activity-ui/src/main/resources/META-INF/spring/spreadsheet-import-activity-ui-context-osgi.xml ---------------------------------------------------------------------- diff --git a/taverna-spreadsheet-import-activity-ui/src/main/resources/META-INF/spring/spreadsheet-import-activity-ui-context-osgi.xml b/taverna-spreadsheet-import-activity-ui/src/main/resources/META-INF/spring/spreadsheet-import-activity-ui-context-osgi.xml index 72ffb77..ad6df6d 100644 --- a/taverna-spreadsheet-import-activity-ui/src/main/resources/META-INF/spring/spreadsheet-import-activity-ui-context-osgi.xml +++ b/taverna-spreadsheet-import-activity-ui/src/main/resources/META-INF/spring/spreadsheet-import-activity-ui-context-osgi.xml @@ -6,23 +6,23 @@ http://www.springframework.org/schema/osgi http://www.springframework.org/schema/osgi/spring-osgi.xsd"> - <service ref="SpreadsheetImportActivityIcon" interface="net.sf.taverna.t2.workbench.activityicons.ActivityIconSPI" /> + <service ref="SpreadsheetImportActivityIcon" interface="org.apache.taverna.workbench.activityicons.ActivityIconSPI" /> - <service ref="SpreadsheetImportTemplateService" interface="net.sf.taverna.t2.servicedescriptions.ServiceDescriptionProvider" /> + <service ref="SpreadsheetImportTemplateService" interface="org.apache.taverna.servicedescriptions.ServiceDescriptionProvider" /> <service ref="SpreadsheetImportAddTemplateAction" auto-export="interfaces" /> <service ref="SpreadsheetImportConfigureMenuAction" auto-export="interfaces" /> <service ref="SpreadsheetImportAddTemplateMenuAction" auto-export="interfaces" /> - <service ref="SpreadsheetImportContextualViewFactory" interface="net.sf.taverna.t2.workbench.ui.views.contextualviews.activity.ContextualViewFactory" /> + <service ref="SpreadsheetImportContextualViewFactory" interface="org.apache.taverna.workbench.ui.views.contextualviews.activity.ContextualViewFactory" /> - <reference id="editManager" interface="net.sf.taverna.t2.workbench.edits.EditManager" /> - <reference id="fileManager" interface="net.sf.taverna.t2.workbench.file.FileManager" /> - <reference id="menuManager" interface="net.sf.taverna.t2.ui.menu.MenuManager" /> - <reference id="selectionManager" interface="net.sf.taverna.t2.workbench.selection.SelectionManager" /> - <reference id="activityIconManager" interface="net.sf.taverna.t2.workbench.activityicons.ActivityIconManager" /> - <reference id="colourManager" interface="net.sf.taverna.t2.workbench.configuration.colour.ColourManager" /> - <reference id="serviceDescriptionRegistry" interface="net.sf.taverna.t2.servicedescriptions.ServiceDescriptionRegistry" /> + <reference id="editManager" interface="org.apache.taverna.workbench.edits.EditManager" /> + <reference id="fileManager" interface="org.apache.taverna.workbench.file.FileManager" /> + <reference id="menuManager" interface="org.apache.taverna.ui.menu.MenuManager" /> + <reference id="selectionManager" interface="org.apache.taverna.workbench.selection.SelectionManager" /> + <reference id="activityIconManager" interface="org.apache.taverna.workbench.activityicons.ActivityIconManager" /> + <reference id="colourManager" interface="org.apache.taverna.workbench.configuration.colour.ColourManager" /> + <reference id="serviceDescriptionRegistry" interface="org.apache.taverna.servicedescriptions.ServiceDescriptionRegistry" /> <reference id="serviceRegistry" interface="uk.org.taverna.commons.services.ServiceRegistry" /> </beans:beans> http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench-common-activities/blob/163747de/taverna-spreadsheet-import-activity-ui/src/main/resources/META-INF/spring/spreadsheet-import-activity-ui-context.xml ---------------------------------------------------------------------- diff --git a/taverna-spreadsheet-import-activity-ui/src/main/resources/META-INF/spring/spreadsheet-import-activity-ui-context.xml b/taverna-spreadsheet-import-activity-ui/src/main/resources/META-INF/spring/spreadsheet-import-activity-ui-context.xml index 7fdba26..b622605 100644 --- a/taverna-spreadsheet-import-activity-ui/src/main/resources/META-INF/spring/spreadsheet-import-activity-ui-context.xml +++ b/taverna-spreadsheet-import-activity-ui/src/main/resources/META-INF/spring/spreadsheet-import-activity-ui-context.xml @@ -3,13 +3,13 @@ xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"> - <bean id="SpreadsheetImportActivityIcon" class="net.sf.taverna.t2.activities.spreadsheet.servicedescriptions.SpreadsheetImportActivityIcon"> + <bean id="SpreadsheetImportActivityIcon" class="org.apache.taverna.activities.spreadsheet.servicedescriptions.SpreadsheetImportActivityIcon"> <property name="colourManager" ref="colourManager" /> </bean> - <bean id="SpreadsheetImportTemplateService" class="net.sf.taverna.t2.activities.spreadsheet.servicedescriptions.SpreadsheetImportTemplateService" /> + <bean id="SpreadsheetImportTemplateService" class="org.apache.taverna.activities.spreadsheet.servicedescriptions.SpreadsheetImportTemplateService" /> - <bean id="SpreadsheetImportAddTemplateAction" class="net.sf.taverna.t2.activities.spreadsheet.menu.SpreadsheetImportAddTemplateAction"> + <bean id="SpreadsheetImportAddTemplateAction" class="org.apache.taverna.activities.spreadsheet.menu.SpreadsheetImportAddTemplateAction"> <property name="editManager" ref="editManager" /> <property name="menuManager" ref="menuManager" /> <property name="selectionManager" ref="selectionManager" /> @@ -17,7 +17,7 @@ <property name="serviceDescriptionRegistry" ref="serviceDescriptionRegistry" /> <property name="serviceRegistry" ref="serviceRegistry" /> </bean> - <bean id="SpreadsheetImportAddTemplateMenuAction" class="net.sf.taverna.t2.activities.spreadsheet.menu.SpreadsheetImportAddTemplateMenuAction"> + <bean id="SpreadsheetImportAddTemplateMenuAction" class="org.apache.taverna.activities.spreadsheet.menu.SpreadsheetImportAddTemplateMenuAction"> <property name="editManager" ref="editManager" /> <property name="menuManager" ref="menuManager" /> <property name="selectionManager" ref="selectionManager" /> @@ -25,7 +25,7 @@ <property name="serviceDescriptionRegistry" ref="serviceDescriptionRegistry" /> <property name="serviceRegistry" ref="serviceRegistry" /> </bean> - <bean id="SpreadsheetImportConfigureMenuAction" class="net.sf.taverna.t2.activities.spreadsheet.menu.SpreadsheetImportConfigureMenuAction"> + <bean id="SpreadsheetImportConfigureMenuAction" class="org.apache.taverna.activities.spreadsheet.menu.SpreadsheetImportConfigureMenuAction"> <property name="editManager" ref="editManager" /> <property name="fileManager" ref="fileManager" /> <property name="activityIconManager" ref="activityIconManager" /> @@ -33,7 +33,7 @@ <property name="serviceRegistry" ref="serviceRegistry" /> </bean> - <bean id="SpreadsheetImportContextualViewFactory" class="net.sf.taverna.t2.activities.spreadsheet.views.SpreadsheetImportContextualViewFactory"> + <bean id="SpreadsheetImportContextualViewFactory" class="org.apache.taverna.activities.spreadsheet.views.SpreadsheetImportContextualViewFactory"> <property name="editManager" ref="editManager" /> <property name="fileManager" ref="fileManager" /> <property name="activityIconManager" ref="activityIconManager" /> http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench-common-activities/blob/163747de/taverna-spreadsheet-import-activity-ui/src/main/resources/net/sf/taverna/t2/activities/spreadsheet/iln8/ui-text.properties ---------------------------------------------------------------------- diff --git a/taverna-spreadsheet-import-activity-ui/src/main/resources/net/sf/taverna/t2/activities/spreadsheet/iln8/ui-text.properties b/taverna-spreadsheet-import-activity-ui/src/main/resources/net/sf/taverna/t2/activities/spreadsheet/iln8/ui-text.properties deleted file mode 100644 index 2a4480f..0000000 --- a/taverna-spreadsheet-import-activity-ui/src/main/resources/net/sf/taverna/t2/activities/spreadsheet/iln8/ui-text.properties +++ /dev/null @@ -1,43 +0,0 @@ -SpreadsheetImportActivityConfigurationAction.canceButton=Cancel -SpreadsheetImportActivityConfigurationAction.dialogTitle=Spreadsheet Import Configuration -SpreadsheetImportActivityConfigurationAction.okButton=Finish -SpreadsheetImportAddTemplateAction.addMenu=Spreadsheet import -SpreadsheetImportConfigureMenuAction.configureMenu=Configure Spreadsheet Import -SpreadsheetImportConfigTableModel.column=Column -SpreadsheetImportConfigTableModel.portName=Port Name -SpreadsheetImportConfigView.nextButton=Next -SpreadsheetImportConfigView.backButton=Back -SpreadsheetImportConfigView.columnMappingSectionLabel=Column to Port Name Mapping -SpreadsheetImportConfigView.outputFormatSectionLabel=Output Format -SpreadsheetImportConfigView.columnSectionLabel=Columns -SpreadsheetImportConfigView.DEFAULT_MESSAGE=Select the data range -SpreadsheetImportConfigView.DUPLICATE_PORT_NAME_ERROR_MESSAGE=Duplicate activity port name -SpreadsheetImportConfigView.EMPTY_FROM_COLUMN_ERROR_MESSAGE='From' column must be specified -SpreadsheetImportConfigView.EMPTY_FROM_ROW_ERROR_MESSAGE='From' row must be specified -SpreadsheetImportConfigView.EMPTY_TO_COLUMN_ERROR_MESSAGE='To' column must be specified -SpreadsheetImportConfigView.emptyCellSectionLabel=Empty cells -SpreadsheetImportConfigView.emptyStringOption=Use an empty string -SpreadsheetImportConfigView.excludeHeaderRowOption=Exclude header row -SpreadsheetImportConfigView.from=From -SpreadsheetImportConfigView.FROM_COLUMN_ERROR_MESSAGE='From' column can only contain characters A-Z -SpreadsheetImportConfigView.FROM_ROW_ERROR_MESSAGE='From' row must be a number greater than 0 -SpreadsheetImportConfigView.generateErrorOption=Generate an error value -SpreadsheetImportConfigView.ignoreBlankRowsOption=Ignore blank rows -SpreadsheetImportConfigView.multiplePortOption=Multiple outputs (one per spreadsheet column) -SpreadsheetImportConfigView.singlePortOption=A single CSV formatted output -SpreadsheetImportConfigView.userDefinedCsvDelimiter=Use this value delimiter character: -SpreadsheetImportConfigView.INCONSISTENT_COLUMN_MESSAGE='To' column must not be less than 'from' column -SpreadsheetImportConfigView.INCONSISTENT_ROW_MESSAGE='To'row must not be less than 'from' row -SpreadsheetImportConfigView.panelTitle=Configure spreadsheet file import -SpreadsheetImportConfigView.rowSectionLabel=Rows -SpreadsheetImportConfigView.selectAllRowsOption=All rows -SpreadsheetImportConfigView.to=to -SpreadsheetImportConfigView.TO_COLUMN_ERROR_MESSAGE='To' column can only contain characters A-Z -SpreadsheetImportConfigView.TO_ROW_ERROR_MESSAGE='To' row must be a number greater than 0 -SpreadsheetImportConfigView.userDefinedOption=Use this value: -SpreadsheetImportContextualView.activityName=Spreadsheet Import Activity -SpreadsheetImportContextualView.depth=Depth -SpreadsheetImportContextualView.inputPortName=Input Port Name -SpreadsheetImportContextualView.outputPortName=Output Port Name -SpreadsheetImportTemplateService.serviceDescription=A service that imports data from spreadsheets -SpreadsheetImportTemplateService.serviceName=SpreadsheetImport http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench-common-activities/blob/163747de/taverna-spreadsheet-import-activity-ui/src/main/resources/org/apache/taverna/activities/spreadsheet/iln8/ui-text.properties ---------------------------------------------------------------------- diff --git a/taverna-spreadsheet-import-activity-ui/src/main/resources/org/apache/taverna/activities/spreadsheet/iln8/ui-text.properties b/taverna-spreadsheet-import-activity-ui/src/main/resources/org/apache/taverna/activities/spreadsheet/iln8/ui-text.properties new file mode 100644 index 0000000..2a4480f --- /dev/null +++ b/taverna-spreadsheet-import-activity-ui/src/main/resources/org/apache/taverna/activities/spreadsheet/iln8/ui-text.properties @@ -0,0 +1,43 @@ +SpreadsheetImportActivityConfigurationAction.canceButton=Cancel +SpreadsheetImportActivityConfigurationAction.dialogTitle=Spreadsheet Import Configuration +SpreadsheetImportActivityConfigurationAction.okButton=Finish +SpreadsheetImportAddTemplateAction.addMenu=Spreadsheet import +SpreadsheetImportConfigureMenuAction.configureMenu=Configure Spreadsheet Import +SpreadsheetImportConfigTableModel.column=Column +SpreadsheetImportConfigTableModel.portName=Port Name +SpreadsheetImportConfigView.nextButton=Next +SpreadsheetImportConfigView.backButton=Back +SpreadsheetImportConfigView.columnMappingSectionLabel=Column to Port Name Mapping +SpreadsheetImportConfigView.outputFormatSectionLabel=Output Format +SpreadsheetImportConfigView.columnSectionLabel=Columns +SpreadsheetImportConfigView.DEFAULT_MESSAGE=Select the data range +SpreadsheetImportConfigView.DUPLICATE_PORT_NAME_ERROR_MESSAGE=Duplicate activity port name +SpreadsheetImportConfigView.EMPTY_FROM_COLUMN_ERROR_MESSAGE='From' column must be specified +SpreadsheetImportConfigView.EMPTY_FROM_ROW_ERROR_MESSAGE='From' row must be specified +SpreadsheetImportConfigView.EMPTY_TO_COLUMN_ERROR_MESSAGE='To' column must be specified +SpreadsheetImportConfigView.emptyCellSectionLabel=Empty cells +SpreadsheetImportConfigView.emptyStringOption=Use an empty string +SpreadsheetImportConfigView.excludeHeaderRowOption=Exclude header row +SpreadsheetImportConfigView.from=From +SpreadsheetImportConfigView.FROM_COLUMN_ERROR_MESSAGE='From' column can only contain characters A-Z +SpreadsheetImportConfigView.FROM_ROW_ERROR_MESSAGE='From' row must be a number greater than 0 +SpreadsheetImportConfigView.generateErrorOption=Generate an error value +SpreadsheetImportConfigView.ignoreBlankRowsOption=Ignore blank rows +SpreadsheetImportConfigView.multiplePortOption=Multiple outputs (one per spreadsheet column) +SpreadsheetImportConfigView.singlePortOption=A single CSV formatted output +SpreadsheetImportConfigView.userDefinedCsvDelimiter=Use this value delimiter character: +SpreadsheetImportConfigView.INCONSISTENT_COLUMN_MESSAGE='To' column must not be less than 'from' column +SpreadsheetImportConfigView.INCONSISTENT_ROW_MESSAGE='To'row must not be less than 'from' row +SpreadsheetImportConfigView.panelTitle=Configure spreadsheet file import +SpreadsheetImportConfigView.rowSectionLabel=Rows +SpreadsheetImportConfigView.selectAllRowsOption=All rows +SpreadsheetImportConfigView.to=to +SpreadsheetImportConfigView.TO_COLUMN_ERROR_MESSAGE='To' column can only contain characters A-Z +SpreadsheetImportConfigView.TO_ROW_ERROR_MESSAGE='To' row must be a number greater than 0 +SpreadsheetImportConfigView.userDefinedOption=Use this value: +SpreadsheetImportContextualView.activityName=Spreadsheet Import Activity +SpreadsheetImportContextualView.depth=Depth +SpreadsheetImportContextualView.inputPortName=Input Port Name +SpreadsheetImportContextualView.outputPortName=Output Port Name +SpreadsheetImportTemplateService.serviceDescription=A service that imports data from spreadsheets +SpreadsheetImportTemplateService.serviceName=SpreadsheetImport http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench-common-activities/blob/163747de/taverna-wsdl-activity-ui/pom.xml ---------------------------------------------------------------------- diff --git a/taverna-wsdl-activity-ui/pom.xml b/taverna-wsdl-activity-ui/pom.xml index f3f7baa..916c8eb 100644 --- a/taverna-wsdl-activity-ui/pom.xml +++ b/taverna-wsdl-activity-ui/pom.xml @@ -1,75 +1,120 @@ <?xml version="1.0" encoding="UTF-8"?> -<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> - <modelVersion>4.0.0</modelVersion> - <parent> - <groupId>org.apache.taverna.workbench.commonactivities</groupId> - <artifactId>taverna-workbench-commonactivities</artifactId> - <version>3.1.0-incubating-SNAPSHOT</version> - </parent> - <groupId>org.apache.taverna.ui-activities</groupId> - <artifactId>taverna-wsdl-activity-ui</artifactId> - <packaging>bundle</packaging> - <name>Taverna 2 WSDL Activity UI</name> - <build> - <plugins> - <plugin> - <groupId>org.apache.felix</groupId> - <artifactId>maven-bundle-plugin</artifactId> - <extensions>true</extensions> - <configuration> - <instructions> - <!-- Use the java version instead of xmlcommons for javax.* packages --> - <Import-Package>javax.xml.namespace;version="0.0.0",javax.xml.parsers;version="0.0.0",org.w3c.dom;version="0.0.0",org.xml.sax;version="0.0.0",*</Import-Package> - </instructions> - </configuration> - </plugin> - </plugins> - </build> - <dependencies> +<project xmlns="http://maven.apache.org/POM/4.0.0" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> + + <modelVersion>4.0.0</modelVersion> + <parent> + <groupId>org.apache.taverna.workbench.commonactivities</groupId> + <artifactId>taverna-workbench-commonactivities</artifactId> + <version>3.1.0-incubating-SNAPSHOT</version> + </parent> + + <groupId>org.apache.taverna.ui-activities</groupId> + <artifactId>taverna-wsdl-activity-ui</artifactId> + <packaging>bundle</packaging> + <name>Taverna 2 WSDL Activity UI</name> + + <build> + <plugins> + <plugin> + <groupId>org.apache.felix</groupId> + <artifactId>maven-bundle-plugin</artifactId> + <extensions>true</extensions> + <configuration> + <instructions> + <!-- Use the java version instead of xmlcommons for javax.* packages --> + <Import-Package>javax.xml.namespace;version="0.0.0",javax.xml.parsers;version="0.0.0",org.w3c.dom;version="0.0.0",org.xml.sax;version="0.0.0",*</Import-Package> + </instructions> + </configuration> + </plugin> + </plugins> + </build> + + <dependencies> + <dependency> + <groupId>org.apache.taverna.engine</groupId> + <artifactId>taverna-credential-manager</artifactId> + <version>${taverna.engine.version}</version> + </dependency> <!-- - <dependency> - <groupId>net.sf.taverna.t2.ui-api</groupId> - <artifactId>activity-icons-api</artifactId> - <version>${t2.ui.api.version}</version> - </dependency> - <dependency> - <groupId>net.sf.taverna.t2.ui-api</groupId> - <artifactId>activity-palette-api</artifactId> - <version>${t2.ui.api.version}</version> - </dependency> - <dependency> - <groupId>net.sf.taverna.t2.activities</groupId> - <artifactId>wsdl-activity</artifactId> - <version>${t2.activities.version}</version> - </dependency> - <dependency> - <groupId>net.sf.taverna.t2.ui-components</groupId> - <artifactId>credential-manager-ui</artifactId> - <version>${t2.ui.components.version}</version> - </dependency> - <dependency> - <groupId>net.sf.taverna.t2.ui-api</groupId> - <artifactId>contextual-views-api</artifactId> - <version>${t2.ui.api.version}</version> - </dependency> - <dependency> - <groupId>net.sf.taverna.t2.ui-api</groupId> - <artifactId>activity-tools</artifactId> - <version>${t2.ui.api.version}</version> - </dependency> - <dependency> - <groupId>net.sf.taverna.t2.lang</groupId> - <artifactId>ui</artifactId> - <version>${t2.lang.version}</version> - </dependency> ---> - <dependency> - <groupId>junit</groupId> - <artifactId>junit</artifactId> - <version>${junit.version}</version> - <scope>test</scope> - </dependency> - </dependencies> + <dependency> + <groupId>org.apache.taverna.commonactivities</groupId> + <artifactId>taverna-wsdl-generic</artifactId> + <version>${taverna.commonactivities.version}</version> + </dependency> +--> + <dependency> + <groupId>org.apache.taverna.commonactivities</groupId> + <artifactId>taverna-wsdl-activity</artifactId> + <version>${taverna.commonactivities.version}</version> + </dependency> + + <dependency> + <groupId>org.apache.taverna.workbench</groupId> + <artifactId>taverna-activity-palette-api</artifactId> + <version>${taverna.workbench.version}</version> + </dependency> + <dependency> + <groupId>org.apache.taverna.workbench</groupId> + <artifactId>taverna-edits-api</artifactId> + <version>${taverna.workbench.version}</version> + </dependency> + <dependency> + <groupId>org.apache.taverna.workbench</groupId> + <artifactId>taverna-selection-api</artifactId> + <version>${taverna.workbench.version}</version> + </dependency> + + <dependency> + <groupId>org.apache.taverna.workbench</groupId> + <artifactId>taverna-menu-api</artifactId> + <version>${taverna.workbench.version}</version> + </dependency> + <dependency> + <groupId>org.apache.taverna.workbench</groupId> + <artifactId>taverna-activity-icons-api</artifactId> + <version>${taverna.workbench.version}</version> + </dependency> + <dependency> + <groupId>org.apache.taverna.workbench</groupId> + <artifactId>taverna-helper-api</artifactId> + <version>${taverna.workbench.version}</version> + </dependency> + <dependency> + <groupId>org.apache.taverna.workbench</groupId> + <artifactId>taverna-ui</artifactId> + <version>${taverna.workbench.version}</version> + </dependency> + <dependency> + <groupId>org.apache.taverna.workbench</groupId> + <artifactId>taverna-credential-manager-ui</artifactId> + <version>${taverna.workbench.version}</version> + </dependency> + <dependency> + <groupId>org.apache.taverna.workbench</groupId> + <artifactId>taverna-configuration-ui-api</artifactId> + <version>${taverna.workbench.version}</version> + </dependency> + <dependency> + <groupId>org.apache.taverna.workbench</groupId> + <artifactId>taverna-contextual-views-api</artifactId> + <version>${taverna.workbench.version}</version> + </dependency> + <dependency> + <groupId>org.apache.taverna.workbench</groupId> + <artifactId>taverna-activity-tools</artifactId> + <version>${taverna.workbench.version}</version> + </dependency> + + <dependency> + <groupId>junit</groupId> + <artifactId>junit</artifactId> + <version>${junit.version}</version> + <scope>test</scope> + </dependency> + + </dependencies> <repositories> <repository> <releases /> http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench-common-activities/blob/163747de/taverna-wsdl-activity-ui/src/main/java/net/sf/taverna/t2/activities/wsdl/actions/AbstractAddXMLSplitterAction.java ---------------------------------------------------------------------- diff --git a/taverna-wsdl-activity-ui/src/main/java/net/sf/taverna/t2/activities/wsdl/actions/AbstractAddXMLSplitterAction.java b/taverna-wsdl-activity-ui/src/main/java/net/sf/taverna/t2/activities/wsdl/actions/AbstractAddXMLSplitterAction.java deleted file mode 100644 index d92dab9..0000000 --- a/taverna-wsdl-activity-ui/src/main/java/net/sf/taverna/t2/activities/wsdl/actions/AbstractAddXMLSplitterAction.java +++ /dev/null @@ -1,156 +0,0 @@ -package net.sf.taverna.t2.activities.wsdl.actions; -/******************************************************************************* - * Copyright (C) 2008 The University of Manchester - * - * Modifications to the initial code base are copyright of their - * respective authors, or their employers as appropriate. - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public License - * as published by the Free Software Foundation; either version 2.1 of - * the License, or (at your option) any later version. - * - * This program 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 - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - ******************************************************************************/ - -import java.awt.event.ActionEvent; -import java.io.IOException; -import java.util.ArrayList; -import java.util.Collections; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.Map.Entry; - -import javax.swing.AbstractAction; -import javax.swing.JComponent; -import javax.swing.JOptionPane; -import javax.wsdl.WSDLException; -import javax.xml.parsers.ParserConfigurationException; - -import net.sf.taverna.t2.workbench.edits.EditException; -import net.sf.taverna.t2.workbench.edits.EditManager; -import net.sf.taverna.t2.workbench.selection.SelectionManager; -import net.sf.taverna.wsdl.parser.ArrayTypeDescriptor; -import net.sf.taverna.wsdl.parser.ComplexTypeDescriptor; -import net.sf.taverna.wsdl.parser.TypeDescriptor; -import net.sf.taverna.wsdl.parser.UnknownOperationException; - -import org.apache.log4j.Logger; -import org.jdom.JDOMException; -import org.xml.sax.SAXException; - -import uk.org.taverna.scufl2.api.activity.Activity; -import uk.org.taverna.scufl2.api.common.Scufl2Tools; -import uk.org.taverna.scufl2.api.core.Workflow; -import uk.org.taverna.scufl2.api.profiles.Profile; - -/** - * Abstract superclass of {@link AddXMLOutputSplitterAction} and - * {@link AddXMLInputSplitterAction}. - * <p> - * Pops up a {@link JOptionPane} with the names of all the wsdl ports. The one - * that is selected is added as an input/output splitter to the currently open - * dataflow using the {@link AddXMLSplitterEdit} - * - * @author Ian Dunlop - * @author Stian Soiland-Reyes - * @author Stuart Owen - * - */ -@SuppressWarnings("serial") -public abstract class AbstractAddXMLSplitterAction extends AbstractAction { - - private static Logger logger = Logger.getLogger(AddXMLOutputSplitterAction.class); - - protected Scufl2Tools scufl2Tools = new Scufl2Tools(); - - protected JComponent owner; - protected final Activity activity; - protected final EditManager editManager; - protected final SelectionManager selectionManager; - - public AbstractAddXMLSplitterAction(Activity activity, - JComponent owner, EditManager editManager, SelectionManager selectionManager) { - this.activity = activity; - this.owner = owner; - this.editManager = editManager; - this.selectionManager = selectionManager; - } - - public void actionPerformed(ActionEvent ev) { - List<String> possibilities; - Map<String, TypeDescriptor> typeDescriptors; - try { - typeDescriptors = getTypeDescriptors(); - } catch (UnknownOperationException ex) { - logger.error("Can't find operation for activity " - + activity, ex); - return; - } catch (IOException | ParserConfigurationException | WSDLException | SAXException | JDOMException ex) { - logger.error("Can't read definition for activity " - + activity, ex); - return; - } - - typeDescriptors = filterDescriptors(typeDescriptors); - - possibilities = new ArrayList<String>(typeDescriptors.keySet()); - if (possibilities.isEmpty()) { - logger.warn("No type descriptors found for activity " + activity); - return; - } - Collections.sort(possibilities); - - String portName = (String) JOptionPane.showInputDialog(owner, - "Select the port to add the splitter to", - "Add output XML splitter", JOptionPane.PLAIN_MESSAGE, null, - possibilities.toArray(), possibilities.get(0)); - - Workflow workflow = selectionManager.getSelectedWorkflow(); - Profile profile = selectionManager.getSelectedProfile(); - TypeDescriptor typeDescriptorForPort = typeDescriptors - .get(portName); - - if (typeDescriptorForPort instanceof ArrayTypeDescriptor - || typeDescriptorForPort instanceof ComplexTypeDescriptor) { - AddXMLSplitterEdit edit = new AddXMLSplitterEdit(workflow, profile, - activity, typeDescriptorForPort, portName, isInput()); - try { - editManager.doDataflowEdit(workflow.getParent(), edit); - } catch (EditException ex) { - logger.error("Could not perform edit to add " + portName, ex); - } - } else { - logger.warn("Unknown typedescriptor for " + portName); - } - } - - public static Map<String, TypeDescriptor> filterDescriptors( - Map<String, TypeDescriptor> descriptors) { - Map<String, TypeDescriptor> filtered = new HashMap<String, TypeDescriptor>(); - for (Entry<String, TypeDescriptor> entry : descriptors.entrySet()) { - TypeDescriptor descriptor = entry.getValue(); - if (descriptor.getMimeType().contains("'text/xml'")) { - filtered.put(entry.getKey(), descriptor); - } - } - return filtered; - } - - protected abstract boolean isInput(); - - public abstract Map<String, TypeDescriptor> getTypeDescriptors() - throws UnknownOperationException, IOException, ParserConfigurationException, WSDLException, SAXException, JDOMException; - - public void setOwner(JComponent owner) { - this.owner = owner; - } -} \ No newline at end of file
