http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench/blob/dc466d6d/taverna-workbench-contextual-views-impl/src/main/java/net/sf/taverna/t2/workbench/ui/views/contextualviews/annotated/AnnotatedContextualView.java ---------------------------------------------------------------------- diff --git a/taverna-workbench-contextual-views-impl/src/main/java/net/sf/taverna/t2/workbench/ui/views/contextualviews/annotated/AnnotatedContextualView.java b/taverna-workbench-contextual-views-impl/src/main/java/net/sf/taverna/t2/workbench/ui/views/contextualviews/annotated/AnnotatedContextualView.java deleted file mode 100644 index 018a121..0000000 --- a/taverna-workbench-contextual-views-impl/src/main/java/net/sf/taverna/t2/workbench/ui/views/contextualviews/annotated/AnnotatedContextualView.java +++ /dev/null @@ -1,263 +0,0 @@ -/******************************************************************************* - * Copyright (C) 2007 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 - ******************************************************************************/ -package net.sf.taverna.t2.workbench.ui.views.contextualviews.annotated; - -import static javax.swing.BoxLayout.Y_AXIS; - -import java.awt.event.FocusEvent; -import java.awt.event.FocusListener; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.PropertyResourceBundle; -import java.util.ResourceBundle; -import java.util.regex.Pattern; - -import javax.swing.BoxLayout; -import javax.swing.JComponent; -import javax.swing.JPanel; -import javax.swing.JScrollPane; -import javax.swing.border.EmptyBorder; -import javax.swing.border.TitledBorder; - -import net.sf.taverna.t2.annotation.Annotated; -import net.sf.taverna.t2.annotation.AnnotationBeanSPI; -import net.sf.taverna.t2.lang.ui.DialogTextArea; -import net.sf.taverna.t2.workbench.edits.CompoundEdit; -import net.sf.taverna.t2.workbench.edits.Edit; -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.t2.workbench.ui.views.contextualviews.ContextualView; -import net.sf.taverna.t2.workbench.ui.views.contextualviews.impl.ContextualViewComponent; - -import org.apache.log4j.Logger; - -import uk.org.taverna.scufl2.api.container.WorkflowBundle; - -/** - * This is a ContextualView that should be able to display and allow editing of - * Annotation information for any Annotated. At the moment it is only used for - * Dataflow. - * - * @author Alan R Williams - */ -@SuppressWarnings("serial") -class AnnotatedContextualView extends ContextualView { - private static final int WORKFLOW_NAME_LENGTH = 20; - public static final String VIEW_TITLE = "Annotations"; - private final static String MISSING_VALUE = "Type here to give details"; - private final static int DEFAULT_AREA_WIDTH = 60; - private final static int DEFAULT_AREA_ROWS = 8; - - private static Logger logger = Logger - .getLogger(AnnotatedContextualView.class); - private static PropertyResourceBundle prb = (PropertyResourceBundle) ResourceBundle - .getBundle("annotatedcontextualview"); - - // TODO convert to scufl2 - // private static AnnotationTools annotationTools = new AnnotationTools(); - - /** - * The object to which the Annotations apply - */ - private Annotated<?> annotated; - private SelectionManager selectionManager; - private EditManager editManager; - private boolean isStandalone = false; - private JPanel panel; - @SuppressWarnings("unused") - private final List<AnnotationBeanSPI> annotationBeans; - - public AnnotatedContextualView(Annotated<?> annotated, - EditManager editManager, SelectionManager selectionManager, - List<AnnotationBeanSPI> annotationBeans) { - super(); - this.editManager = editManager; - this.selectionManager = selectionManager; - this.annotationBeans = annotationBeans; - this.annotated = annotated; - - initialise(); - initView(); - } - - @Override - public void refreshView() { - initialise(); - } - - private void initialise() { - if (panel == null) { - panel = new JPanel(); - panel.setLayout(new BoxLayout(panel, Y_AXIS)); - } else - panel.removeAll(); - populatePanel(); - revalidate(); - } - - @Override - public JComponent getMainFrame() { - return panel; - } - - @Override - public String getViewTitle() { - return VIEW_TITLE; - } - - private Map<String,String> getAnnotations() { - // TODO convert to scufl2 - Map<String, String> result = new HashMap<>(); - //for (Class<?> c : annotationTools.getAnnotatingClasses(annotated)) { - // String name = ""; - // try { - // name = prb.getString(c.getCanonicalName()); - // } catch (MissingResourceException e) { - // name = c.getCanonicalName(); - // } - // String value = annotationTools.getAnnotationString(annotated, c, - // MISSING_VALUE); - // result.put(name,value); - //} - return result; - } - public void populatePanel() { - JPanel scrollPanel = new JPanel(); - scrollPanel.setLayout(new BoxLayout(scrollPanel, Y_AXIS)); - panel.setBorder(new EmptyBorder(5, 5, 5, 5)); - Map<String,String>annotations = getAnnotations(); - for (String name : annotations.keySet()) { - JPanel subPanel = new JPanel(); - subPanel.setBorder(new TitledBorder(name)); - subPanel.add(createTextArea(String.class, annotations.get(name))); - scrollPanel.add(subPanel); - } - JScrollPane scrollPane = new JScrollPane(scrollPanel); - panel.add(scrollPane); - } - - private JScrollPane createTextArea(Class<?> c, String value) { - DialogTextArea area = new DialogTextArea(value); - area.setFocusable(true); - area.addFocusListener(new TextAreaFocusListener(area, c)); - area.setColumns(DEFAULT_AREA_WIDTH); - area.setRows(DEFAULT_AREA_ROWS); - area.setLineWrap(true); - area.setWrapStyleWord(true); - - return new JScrollPane(area); - } - - private class TextAreaFocusListener implements FocusListener { - String oldValue = null; - Class<?> annotationClass; - DialogTextArea area = null; - - public TextAreaFocusListener(DialogTextArea area, Class<?> c) { - annotationClass = c; - oldValue = area.getText(); - this.area = area; - } - - @Override - public void focusGained(FocusEvent e) { - if (area.getText().equals(MISSING_VALUE)) - area.setText(""); - } - - @Override - public void focusLost(FocusEvent e) { - String currentValue = area.getText(); - if (currentValue.isEmpty() || currentValue.equals(MISSING_VALUE)) { - currentValue = MISSING_VALUE; - area.setText(currentValue); - } - if (!currentValue.equals(oldValue)) { - if (currentValue == MISSING_VALUE) - currentValue = ""; - try { - WorkflowBundle currentDataflow = selectionManager - .getSelectedWorkflowBundle(); - List<Edit<?>> editList = new ArrayList<>(); - addWorkflowNameEdits(currentValue, currentDataflow, - editList); - if (!isStandalone) - ContextualViewComponent.selfGenerated = true; - editManager.doDataflowEdit(currentDataflow, - new CompoundEdit(editList)); - ContextualViewComponent.selfGenerated = false; - } catch (EditException e1) { - logger.warn("Can't set annotation", e1); - } - oldValue = area.getText(); - } - } - - private boolean isTitleAnnotation() { - // TODO convert to scufl2 - return prb.getString(annotationClass.getCanonicalName()).equals( - "Title"); - } - - // TODO convert to scufl2 - private void addWorkflowNameEdits(String currentValue, - WorkflowBundle currentDataflow, List<Edit<?>> editList) { - //editList.add(annotationTools.setAnnotationString(annotated, - // annotationClass, currentValue, edits)); - if (annotated == currentDataflow && isTitleAnnotation() - && !currentValue.isEmpty()) { - @SuppressWarnings("unused") - String sanitised = sanitiseName(currentValue); - //editList.add(edits.getUpdateDataflowNameEdit(currentDataflow, - // sanitised)); - } - } - } - - /** - * Checks that the name does not have any characters that are invalid for a - * processor name. - * <p> - * The resulting name must contain only the chars [A-Za-z_0-9]. - * - * @param name - * the original name - * @return the sanitised name - */ - private static String sanitiseName(String name) { - if (name.length() > WORKFLOW_NAME_LENGTH) - name = name.substring(0, WORKFLOW_NAME_LENGTH); - if (Pattern.matches("\\w++", name)) - return name; - StringBuilder temp = new StringBuilder(); - for (char c : name.toCharArray()) - temp.append(Character.isLetterOrDigit(c) || c == '_' ? c : '_'); - return temp.toString(); - } - - @Override - public int getPreferredPosition() { - return 500; - } -}
http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench/blob/dc466d6d/taverna-workbench-contextual-views-impl/src/main/java/net/sf/taverna/t2/workbench/ui/views/contextualviews/annotated/AnnotatedContextualViewFactory.java ---------------------------------------------------------------------- diff --git a/taverna-workbench-contextual-views-impl/src/main/java/net/sf/taverna/t2/workbench/ui/views/contextualviews/annotated/AnnotatedContextualViewFactory.java b/taverna-workbench-contextual-views-impl/src/main/java/net/sf/taverna/t2/workbench/ui/views/contextualviews/annotated/AnnotatedContextualViewFactory.java deleted file mode 100644 index eb18803..0000000 --- a/taverna-workbench-contextual-views-impl/src/main/java/net/sf/taverna/t2/workbench/ui/views/contextualviews/annotated/AnnotatedContextualViewFactory.java +++ /dev/null @@ -1,43 +0,0 @@ -package net.sf.taverna.t2.workbench.ui.views.contextualviews.annotated; - -import static java.util.Collections.singletonList; - -import java.util.List; - -import net.sf.taverna.t2.annotation.Annotated; -import net.sf.taverna.t2.annotation.AnnotationBeanSPI; -import net.sf.taverna.t2.workbench.edits.EditManager; -import net.sf.taverna.t2.workbench.selection.SelectionManager; -import net.sf.taverna.t2.workbench.ui.views.contextualviews.ContextualView; -import net.sf.taverna.t2.workbench.ui.views.contextualviews.activity.ContextualViewFactory; -import net.sf.taverna.t2.workflowmodel.processor.activity.Activity; - -public class AnnotatedContextualViewFactory implements - ContextualViewFactory<Annotated<?>> { - private EditManager editManager; - private List<AnnotationBeanSPI> annotationBeans; - private SelectionManager selectionManager; - - @Override - public boolean canHandle(Object selection) { - return ((selection instanceof Annotated) && !(selection instanceof Activity)); - } - - @Override - public List<ContextualView> getViews(Annotated<?> selection) { - return singletonList((ContextualView) new AnnotatedContextualView( - selection, editManager, selectionManager, annotationBeans)); - } - - public void setEditManager(EditManager editManager) { - this.editManager = editManager; - } - - public void setSelectionManager(SelectionManager selectionManager) { - this.selectionManager = selectionManager; - } - - public void setAnnotationBeans(List<AnnotationBeanSPI> annotationBeans) { - this.annotationBeans = annotationBeans; - } -} http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench/blob/dc466d6d/taverna-workbench-contextual-views-impl/src/main/java/net/sf/taverna/t2/workbench/ui/views/contextualviews/condition/ConditionContextualView.java ---------------------------------------------------------------------- diff --git a/taverna-workbench-contextual-views-impl/src/main/java/net/sf/taverna/t2/workbench/ui/views/contextualviews/condition/ConditionContextualView.java b/taverna-workbench-contextual-views-impl/src/main/java/net/sf/taverna/t2/workbench/ui/views/contextualviews/condition/ConditionContextualView.java deleted file mode 100644 index f9308b5..0000000 --- a/taverna-workbench-contextual-views-impl/src/main/java/net/sf/taverna/t2/workbench/ui/views/contextualviews/condition/ConditionContextualView.java +++ /dev/null @@ -1,74 +0,0 @@ -/******************************************************************************* - * Copyright (C) 2007 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 - ******************************************************************************/ -package net.sf.taverna.t2.workbench.ui.views.contextualviews.condition; - -import java.awt.FlowLayout; - -import javax.swing.JComponent; -import javax.swing.JLabel; -import javax.swing.JPanel; -import javax.swing.border.EmptyBorder; - -import net.sf.taverna.t2.workbench.ui.views.contextualviews.ContextualView; -import uk.org.taverna.scufl2.api.core.BlockingControlLink; - -/** - * Contextual view for dataflow's control (condition) links. - * - * @author David Withers - */ -class ConditionContextualView extends ContextualView { - private static final long serialVersionUID = -894521200616176439L; - - private final BlockingControlLink condition; - private JPanel contitionView; - - public ConditionContextualView(BlockingControlLink condition) { - this.condition = condition; - initView(); - } - - @Override - public JComponent getMainFrame() { - refreshView(); - return contitionView; - } - - @Override - public String getViewTitle() { - return "Control link: " + condition.getBlock().getName() - + " runs after " + condition.getUntilFinished().getName(); - } - - @Override - public void refreshView() { - contitionView = new JPanel(new FlowLayout(FlowLayout.LEFT)); - contitionView.setBorder(new EmptyBorder(5, 5, 5, 5)); - JLabel label = new JLabel( - "<html><body><i>No details available.</i></body><html>"); - contitionView.add(label); - } - - @Override - public int getPreferredPosition() { - return 100; - } -} http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench/blob/dc466d6d/taverna-workbench-contextual-views-impl/src/main/java/net/sf/taverna/t2/workbench/ui/views/contextualviews/condition/ConditionContextualViewFactory.java ---------------------------------------------------------------------- diff --git a/taverna-workbench-contextual-views-impl/src/main/java/net/sf/taverna/t2/workbench/ui/views/contextualviews/condition/ConditionContextualViewFactory.java b/taverna-workbench-contextual-views-impl/src/main/java/net/sf/taverna/t2/workbench/ui/views/contextualviews/condition/ConditionContextualViewFactory.java deleted file mode 100644 index ea69f1a..0000000 --- a/taverna-workbench-contextual-views-impl/src/main/java/net/sf/taverna/t2/workbench/ui/views/contextualviews/condition/ConditionContextualViewFactory.java +++ /dev/null @@ -1,51 +0,0 @@ -/******************************************************************************* - * Copyright (C) 2007 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 - ******************************************************************************/ -package net.sf.taverna.t2.workbench.ui.views.contextualviews.condition; - -import static java.util.Arrays.asList; - -import java.util.List; - -import net.sf.taverna.t2.workbench.ui.views.contextualviews.ContextualView; -import net.sf.taverna.t2.workbench.ui.views.contextualviews.activity.ContextualViewFactory; -import net.sf.taverna.t2.workflowmodel.Condition; -import uk.org.taverna.scufl2.api.core.BlockingControlLink; - -/** - * A factory of contextual views for dataflow's condition links. - * - * @author David Withers - * - */ -public class ConditionContextualViewFactory implements - ContextualViewFactory<BlockingControlLink> { - @Override - public boolean canHandle(Object object) { - return object instanceof Condition; - } - - @Override - public List<ContextualView> getViews(BlockingControlLink condition) { - return asList(new ContextualView[] { new ConditionContextualView( - condition) }); - } - -} http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench/blob/dc466d6d/taverna-workbench-contextual-views-impl/src/main/java/net/sf/taverna/t2/workbench/ui/views/contextualviews/dataflow/DataflowContextualView.java ---------------------------------------------------------------------- diff --git a/taverna-workbench-contextual-views-impl/src/main/java/net/sf/taverna/t2/workbench/ui/views/contextualviews/dataflow/DataflowContextualView.java b/taverna-workbench-contextual-views-impl/src/main/java/net/sf/taverna/t2/workbench/ui/views/contextualviews/dataflow/DataflowContextualView.java deleted file mode 100644 index 4a63868..0000000 --- a/taverna-workbench-contextual-views-impl/src/main/java/net/sf/taverna/t2/workbench/ui/views/contextualviews/dataflow/DataflowContextualView.java +++ /dev/null @@ -1,108 +0,0 @@ -/** - * - */ -package net.sf.taverna.t2.workbench.ui.views.contextualviews.dataflow; - -import static net.sf.taverna.t2.lang.ui.HtmlUtils.buildTableOpeningTag; -import static net.sf.taverna.t2.lang.ui.HtmlUtils.createEditorPane; -import static net.sf.taverna.t2.lang.ui.HtmlUtils.getHtmlHead; -import static net.sf.taverna.t2.lang.ui.HtmlUtils.panelForHtml; - -import javax.swing.JComponent; -import javax.swing.JEditorPane; - -import net.sf.taverna.t2.workbench.configuration.colour.ColourManager; -import net.sf.taverna.t2.workbench.file.FileManager; -import net.sf.taverna.t2.workbench.ui.views.contextualviews.ContextualView; -import net.sf.taverna.t2.workflowmodel.Dataflow; -import uk.org.taverna.scufl2.api.core.Workflow; -import uk.org.taverna.scufl2.api.port.InputWorkflowPort; -import uk.org.taverna.scufl2.api.port.OutputWorkflowPort; - -/** - * @author alanrw - */ -@SuppressWarnings("serial") -class DataflowContextualView extends ContextualView { - private static int MAX_LENGTH = 50; - private static final String ELLIPSIS = "..."; - - private Workflow dataflow; - private JEditorPane editorPane; - private final FileManager fileManager; - private final ColourManager colourManager; - - public DataflowContextualView(Workflow dataflow, FileManager fileManager, - ColourManager colourManager) { - this.dataflow = dataflow; - this.fileManager = fileManager; - this.colourManager = colourManager; - initView(); - } - - @Override - public JComponent getMainFrame() { - editorPane = createEditorPane(buildHtml()); - return panelForHtml(editorPane); - } - - private String buildHtml() { - StringBuilder html = new StringBuilder(getHtmlHead(getBackgroundColour())); - html.append(buildTableOpeningTag()); - - html.append("<tr><td colspan=\"2\" align=\"center\"><b>Source</b></td></tr>"); - String source = "Newly created"; - if (fileManager.getDataflowSource(dataflow.getParent()) != null) - source = fileManager.getDataflowName(dataflow.getParent()); - - html.append("<tr><td colspan=\"2\" align=\"center\">").append(source) - .append("</td></tr>"); - if (!dataflow.getInputPorts().isEmpty()) { - html.append("<tr><th>Input Port Name</th><th>Depth</th></tr>"); - for (InputWorkflowPort dip : dataflow.getInputPorts()) - html.append("<tr><td>") - .append(dip.getName()) - .append("</td><td>") - .append(dip.getDepth() < 0 ? "invalid/unpredicted" - : dip.getDepth()).append("</td></tr>"); - } - if (!dataflow.getOutputPorts().isEmpty()) { - html.append("<tr><th>Output Port Name</th><th>Depth</th></tr>"); - for (OutputWorkflowPort dop : dataflow.getOutputPorts()) - html.append("<tr><td>") - .append(dop.getName()) - .append("</td><td>") - .append(/*(dop.getDepth() < 0 ?*/ "invalid/unpredicted" /*: dop.getDepth())*/) - .append("</td>" + "</tr>"); - } - - return html.append("</table>").append("</body></html>").toString(); - } - - public String getBackgroundColour() { - return colourManager.getDefaultPropertyMap().get( - Dataflow.class.toString()); - } - - @Override - public int getPreferredPosition() { - return 100; - } - - private String limitName(String fullName) { - if (fullName.length() <= MAX_LENGTH) - return fullName; - return fullName.substring(0, MAX_LENGTH - ELLIPSIS.length()) + ELLIPSIS; - } - - @Override - public String getViewTitle() { - return "Workflow " + limitName(dataflow.getName()); - } - - @Override - public void refreshView() { - editorPane.setText(buildHtml()); - repaint(); - } -} http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench/blob/dc466d6d/taverna-workbench-contextual-views-impl/src/main/java/net/sf/taverna/t2/workbench/ui/views/contextualviews/dataflow/DataflowContextualViewFactory.java ---------------------------------------------------------------------- diff --git a/taverna-workbench-contextual-views-impl/src/main/java/net/sf/taverna/t2/workbench/ui/views/contextualviews/dataflow/DataflowContextualViewFactory.java b/taverna-workbench-contextual-views-impl/src/main/java/net/sf/taverna/t2/workbench/ui/views/contextualviews/dataflow/DataflowContextualViewFactory.java deleted file mode 100644 index 0d7f3c0..0000000 --- a/taverna-workbench-contextual-views-impl/src/main/java/net/sf/taverna/t2/workbench/ui/views/contextualviews/dataflow/DataflowContextualViewFactory.java +++ /dev/null @@ -1,41 +0,0 @@ -/** - * - */ -package net.sf.taverna.t2.workbench.ui.views.contextualviews.dataflow; - -import java.util.Arrays; -import java.util.List; - -import net.sf.taverna.t2.workbench.configuration.colour.ColourManager; -import net.sf.taverna.t2.workbench.file.FileManager; -import net.sf.taverna.t2.workbench.ui.views.contextualviews.ContextualView; -import net.sf.taverna.t2.workbench.ui.views.contextualviews.activity.ContextualViewFactory; -import uk.org.taverna.scufl2.api.core.Workflow; - -/** - * @author alanrw - */ -public class DataflowContextualViewFactory implements - ContextualViewFactory<Workflow> { - private FileManager fileManager; - private ColourManager colourManager; - - @Override - public boolean canHandle(Object selection) { - return selection instanceof Workflow; - } - - @Override - public List<ContextualView> getViews(Workflow selection) { - return Arrays.asList(new ContextualView[] { - new DataflowContextualView(selection, fileManager, colourManager)}); - } - - public void setFileManager(FileManager fileManager) { - this.fileManager = fileManager; - } - - public void setColourManager(ColourManager colourManager) { - this.colourManager = colourManager; - } -} http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench/blob/dc466d6d/taverna-workbench-contextual-views-impl/src/main/java/net/sf/taverna/t2/workbench/ui/views/contextualviews/dataflowinputport/DataflowInputPortContextualView.java ---------------------------------------------------------------------- diff --git a/taverna-workbench-contextual-views-impl/src/main/java/net/sf/taverna/t2/workbench/ui/views/contextualviews/dataflowinputport/DataflowInputPortContextualView.java b/taverna-workbench-contextual-views-impl/src/main/java/net/sf/taverna/t2/workbench/ui/views/contextualviews/dataflowinputport/DataflowInputPortContextualView.java deleted file mode 100644 index 3f17a65..0000000 --- a/taverna-workbench-contextual-views-impl/src/main/java/net/sf/taverna/t2/workbench/ui/views/contextualviews/dataflowinputport/DataflowInputPortContextualView.java +++ /dev/null @@ -1,96 +0,0 @@ -/******************************************************************************* - * Copyright (C) 2007 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 - ******************************************************************************/ -package net.sf.taverna.t2.workbench.ui.views.contextualviews.dataflowinputport; - -import static java.awt.FlowLayout.LEFT; - -import java.awt.FlowLayout; -import java.awt.Frame; -import java.awt.event.ActionEvent; - -import javax.swing.AbstractAction; -import javax.swing.Action; -import javax.swing.JComponent; -import javax.swing.JLabel; -import javax.swing.JPanel; -import javax.swing.border.EmptyBorder; - -import uk.org.taverna.scufl2.api.port.InputWorkflowPort; -import net.sf.taverna.t2.workbench.file.FileManager; -import net.sf.taverna.t2.workbench.ui.views.contextualviews.ContextualView; - -/** - * Contextual view for dataflow's input ports. - * - * @author Alex Nenadic - */ -class DataflowInputPortContextualView extends ContextualView{ - private static final long serialVersionUID = -8746856072335775933L; - - private InputWorkflowPort dataflowInputPort; - private JPanel dataflowInputPortView; - @SuppressWarnings("unused") - private FileManager fileManager; - - public DataflowInputPortContextualView(InputWorkflowPort inputport, - FileManager fileManager) { - this.dataflowInputPort = inputport; - this.fileManager = fileManager; - initView(); - } - - @Override - public JComponent getMainFrame() { - refreshView(); - return dataflowInputPortView; - } - - @Override - public String getViewTitle() { - return "Workflow input port: " + dataflowInputPort.getName(); - } - - @Override - public void refreshView() { - dataflowInputPortView = new JPanel(new FlowLayout(LEFT)); - dataflowInputPortView.setBorder(new EmptyBorder(5, 5, 5, 5)); - JLabel label = new JLabel(getTextFromDepth("port", - dataflowInputPort.getDepth())); - dataflowInputPortView.add(label); - } - - @SuppressWarnings("serial") - @Override - public Action getConfigureAction(Frame owner) { - return new AbstractAction("Update prediction") { - @Override - public void actionPerformed(ActionEvent e) { - // fileManager.getCurrentDataflow().checkValidity(); - refreshView(); - } - }; - } - - @Override - public int getPreferredPosition() { - return 100; - } -} http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench/blob/dc466d6d/taverna-workbench-contextual-views-impl/src/main/java/net/sf/taverna/t2/workbench/ui/views/contextualviews/dataflowinputport/DataflowInputPortContextualViewFactory.java ---------------------------------------------------------------------- diff --git a/taverna-workbench-contextual-views-impl/src/main/java/net/sf/taverna/t2/workbench/ui/views/contextualviews/dataflowinputport/DataflowInputPortContextualViewFactory.java b/taverna-workbench-contextual-views-impl/src/main/java/net/sf/taverna/t2/workbench/ui/views/contextualviews/dataflowinputport/DataflowInputPortContextualViewFactory.java deleted file mode 100644 index 5dc5434..0000000 --- a/taverna-workbench-contextual-views-impl/src/main/java/net/sf/taverna/t2/workbench/ui/views/contextualviews/dataflowinputport/DataflowInputPortContextualViewFactory.java +++ /dev/null @@ -1,54 +0,0 @@ -/******************************************************************************* - * Copyright (C) 2007 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 - ******************************************************************************/ -package net.sf.taverna.t2.workbench.ui.views.contextualviews.dataflowinputport; - -import java.util.Arrays; -import java.util.List; - -import net.sf.taverna.t2.workbench.file.FileManager; -import net.sf.taverna.t2.workbench.ui.views.contextualviews.ContextualView; -import net.sf.taverna.t2.workbench.ui.views.contextualviews.activity.ContextualViewFactory; -import uk.org.taverna.scufl2.api.port.InputWorkflowPort; - -/** - * A factory of contextual views for dataflow's input ports. - * - * @author Alex Nenadic - */ -public class DataflowInputPortContextualViewFactory implements - ContextualViewFactory<InputWorkflowPort> { - private FileManager fileManager; - - @Override - public boolean canHandle(Object object) { - return object instanceof InputWorkflowPort; - } - - @Override - public List<ContextualView> getViews(InputWorkflowPort inputport) { - return Arrays.asList(new ContextualView[] { - new DataflowInputPortContextualView(inputport, fileManager)}); - } - - public void setFileManager(FileManager fileManager) { - this.fileManager = fileManager; - } -} http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench/blob/dc466d6d/taverna-workbench-contextual-views-impl/src/main/java/net/sf/taverna/t2/workbench/ui/views/contextualviews/dataflowoutputport/DataflowOutputPortContextualView.java ---------------------------------------------------------------------- diff --git a/taverna-workbench-contextual-views-impl/src/main/java/net/sf/taverna/t2/workbench/ui/views/contextualviews/dataflowoutputport/DataflowOutputPortContextualView.java b/taverna-workbench-contextual-views-impl/src/main/java/net/sf/taverna/t2/workbench/ui/views/contextualviews/dataflowoutputport/DataflowOutputPortContextualView.java deleted file mode 100644 index 9ba55fe..0000000 --- a/taverna-workbench-contextual-views-impl/src/main/java/net/sf/taverna/t2/workbench/ui/views/contextualviews/dataflowoutputport/DataflowOutputPortContextualView.java +++ /dev/null @@ -1,106 +0,0 @@ -/******************************************************************************* - * Copyright (C) 2007 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 - ******************************************************************************/ -package net.sf.taverna.t2.workbench.ui.views.contextualviews.dataflowoutputport; - -import static java.awt.FlowLayout.LEFT; - -import java.awt.FlowLayout; -import java.awt.Frame; -import java.awt.event.ActionEvent; - -import javax.swing.AbstractAction; -import javax.swing.Action; -import javax.swing.JComponent; -import javax.swing.JLabel; -import javax.swing.JPanel; -import javax.swing.border.EmptyBorder; - -import uk.org.taverna.scufl2.api.port.OutputWorkflowPort; -import net.sf.taverna.t2.workbench.file.FileManager; -import net.sf.taverna.t2.workbench.ui.views.contextualviews.ContextualView; - -/** - * Contextual view for dataflow's output ports. - * - * @author Alex Nenadic - */ -public class DataflowOutputPortContextualView extends ContextualView { - private static final long serialVersionUID = 5496014085110553051L; - - private OutputWorkflowPort dataflowOutputPort; - private JPanel dataflowOutputPortView; - @SuppressWarnings("unused") - private FileManager fileManager; - - public DataflowOutputPortContextualView(OutputWorkflowPort outputport, - FileManager fileManager) { - this.dataflowOutputPort = outputport; - this.fileManager = fileManager; - initView(); - } - - @Override - public JComponent getMainFrame() { - refreshView(); - return dataflowOutputPortView; - } - - @Override - public String getViewTitle() { - return "Workflow output port: " + dataflowOutputPort.getName(); - } - - @Override - public void refreshView() { - dataflowOutputPortView = new JPanel(new FlowLayout(LEFT)); - dataflowOutputPortView.setBorder(new EmptyBorder(5,5,5,5)); - JLabel label = new JLabel(getTextForLabel()); - dataflowOutputPortView.add(label); - } - - private String getTextForLabel() { - //FIXME - //return getTextFromDepth("port", dataflowOutputPort.getDepth()); - return "Fix depth for OutputWorkflowPort"; - } - - private void updatePrediction() { - //FIXME - // fileManager.getCurrentDataflow().checkValidity(); - } - - @Override - @SuppressWarnings("serial") - public Action getConfigureAction(Frame owner) { - return new AbstractAction("Update prediction") { - @Override - public void actionPerformed(ActionEvent e) { - updatePrediction(); - refreshView(); - } - }; - } - - @Override - public int getPreferredPosition() { - return 100; - } -} http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench/blob/dc466d6d/taverna-workbench-contextual-views-impl/src/main/java/net/sf/taverna/t2/workbench/ui/views/contextualviews/dataflowoutputport/DataflowOutputPortContextualViewFactory.java ---------------------------------------------------------------------- diff --git a/taverna-workbench-contextual-views-impl/src/main/java/net/sf/taverna/t2/workbench/ui/views/contextualviews/dataflowoutputport/DataflowOutputPortContextualViewFactory.java b/taverna-workbench-contextual-views-impl/src/main/java/net/sf/taverna/t2/workbench/ui/views/contextualviews/dataflowoutputport/DataflowOutputPortContextualViewFactory.java deleted file mode 100644 index 20ac960..0000000 --- a/taverna-workbench-contextual-views-impl/src/main/java/net/sf/taverna/t2/workbench/ui/views/contextualviews/dataflowoutputport/DataflowOutputPortContextualViewFactory.java +++ /dev/null @@ -1,55 +0,0 @@ -/******************************************************************************* - * Copyright (C) 2007 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 - ******************************************************************************/ -package net.sf.taverna.t2.workbench.ui.views.contextualviews.dataflowoutputport; - -import java.util.Arrays; -import java.util.List; - -import net.sf.taverna.t2.workbench.file.FileManager; -import net.sf.taverna.t2.workbench.ui.views.contextualviews.ContextualView; -import net.sf.taverna.t2.workbench.ui.views.contextualviews.activity.ContextualViewFactory; -import net.sf.taverna.t2.workflowmodel.DataflowOutputPort; -import uk.org.taverna.scufl2.api.port.OutputWorkflowPort; - -/** - * A factory of contextual views for dataflow's output ports. - * - * @author Alex Nenadic - */ -public class DataflowOutputPortContextualViewFactory implements - ContextualViewFactory<OutputWorkflowPort> { - private FileManager fileManager; - - @Override - public boolean canHandle(Object object) { - return object instanceof DataflowOutputPort; - } - - @Override - public List<ContextualView> getViews(OutputWorkflowPort outputport) { - return Arrays.asList(new ContextualView[] { - new DataflowOutputPortContextualView(outputport, fileManager)}); - } - - public void setFileManager(FileManager fileManager) { - this.fileManager = fileManager; - } -} http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench/blob/dc466d6d/taverna-workbench-contextual-views-impl/src/main/java/net/sf/taverna/t2/workbench/ui/views/contextualviews/datalink/DatalinkContextualView.java ---------------------------------------------------------------------- diff --git a/taverna-workbench-contextual-views-impl/src/main/java/net/sf/taverna/t2/workbench/ui/views/contextualviews/datalink/DatalinkContextualView.java b/taverna-workbench-contextual-views-impl/src/main/java/net/sf/taverna/t2/workbench/ui/views/contextualviews/datalink/DatalinkContextualView.java deleted file mode 100644 index daa3414..0000000 --- a/taverna-workbench-contextual-views-impl/src/main/java/net/sf/taverna/t2/workbench/ui/views/contextualviews/datalink/DatalinkContextualView.java +++ /dev/null @@ -1,106 +0,0 @@ -/******************************************************************************* - * Copyright (C) 2007 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 - ******************************************************************************/ -package net.sf.taverna.t2.workbench.ui.views.contextualviews.datalink; - -import static java.awt.FlowLayout.LEFT; - -import java.awt.FlowLayout; -import java.awt.Frame; -import java.awt.event.ActionEvent; - -import javax.swing.AbstractAction; -import javax.swing.Action; -import javax.swing.JComponent; -import javax.swing.JLabel; -import javax.swing.JPanel; -import javax.swing.border.EmptyBorder; - -import uk.org.taverna.scufl2.api.core.DataLink; -import net.sf.taverna.t2.workbench.file.FileManager; -import net.sf.taverna.t2.workbench.ui.views.contextualviews.ContextualView; - -/** - * Contextual view for dataflow's datalinks. - * - * @author Alex Nenadic - * @author Alan R Williams - */ -class DatalinkContextualView extends ContextualView { - private static final long serialVersionUID = -5031256519235454876L; - - private DataLink datalink; - private JPanel datalinkView; - @SuppressWarnings("unused") - private final FileManager fileManager; - - public DatalinkContextualView(DataLink datalink, FileManager fileManager) { - this.datalink = datalink; - this.fileManager = fileManager; - initView(); - } - - @Override - public JComponent getMainFrame() { - refreshView(); - return datalinkView; - } - - @Override - public String getViewTitle() { - return "Data link: " + datalink.getReceivesFrom().getName() + " -> " + datalink.getSendsTo().getName(); - } - - @Override - public void refreshView() { - datalinkView = new JPanel(new FlowLayout(LEFT)); - datalinkView.setBorder(new EmptyBorder(5,5,5,5)); - JLabel label = new JLabel (getTextForLabel()); - datalinkView.add(label); - } - - private String getTextForLabel() { - //FIXME - // return getTextFromDepth("link", datalink.getResolvedDepth()); - return "Fix DataLink resolved depth"; - } - - private void updatePrediction() { - //FIXME - // fileManager.getCurrentDataflow().checkValidity(); - } - - @Override - @SuppressWarnings("serial") - public Action getConfigureAction(Frame owner) { - return new AbstractAction("Update prediction") { - @Override - public void actionPerformed(ActionEvent e) { - updatePrediction(); - refreshView(); - } - }; - } - - @Override - public int getPreferredPosition() { - return 100; - } -} http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench/blob/dc466d6d/taverna-workbench-contextual-views-impl/src/main/java/net/sf/taverna/t2/workbench/ui/views/contextualviews/datalink/DatalinkContextualViewFactory.java ---------------------------------------------------------------------- diff --git a/taverna-workbench-contextual-views-impl/src/main/java/net/sf/taverna/t2/workbench/ui/views/contextualviews/datalink/DatalinkContextualViewFactory.java b/taverna-workbench-contextual-views-impl/src/main/java/net/sf/taverna/t2/workbench/ui/views/contextualviews/datalink/DatalinkContextualViewFactory.java deleted file mode 100644 index fa8bf96..0000000 --- a/taverna-workbench-contextual-views-impl/src/main/java/net/sf/taverna/t2/workbench/ui/views/contextualviews/datalink/DatalinkContextualViewFactory.java +++ /dev/null @@ -1,55 +0,0 @@ -/******************************************************************************* - * Copyright (C) 2007 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 - ******************************************************************************/ -package net.sf.taverna.t2.workbench.ui.views.contextualviews.datalink; - -import java.util.Arrays; -import java.util.List; - -import net.sf.taverna.t2.workbench.file.FileManager; -import net.sf.taverna.t2.workbench.ui.views.contextualviews.ContextualView; -import net.sf.taverna.t2.workbench.ui.views.contextualviews.activity.ContextualViewFactory; -import net.sf.taverna.t2.workflowmodel.Datalink; -import uk.org.taverna.scufl2.api.core.DataLink; - -/** - * A factory of contextual views for dataflow's datalinks. - * - * @author Alex Nenadic - */ -public class DatalinkContextualViewFactory implements - ContextualViewFactory<DataLink> { - private FileManager fileManager; - - @Override - public boolean canHandle(Object object) { - return object instanceof Datalink; - } - - @Override - public List<ContextualView> getViews(DataLink datalink) { - return Arrays.asList(new ContextualView[] { - new DatalinkContextualView(datalink, fileManager)}); - } - - public void setFileManager(FileManager fileManager) { - this.fileManager = fileManager; - } -} http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench/blob/dc466d6d/taverna-workbench-contextual-views-impl/src/main/java/net/sf/taverna/t2/workbench/ui/views/contextualviews/impl/ContextualViewComponent.java ---------------------------------------------------------------------- diff --git a/taverna-workbench-contextual-views-impl/src/main/java/net/sf/taverna/t2/workbench/ui/views/contextualviews/impl/ContextualViewComponent.java b/taverna-workbench-contextual-views-impl/src/main/java/net/sf/taverna/t2/workbench/ui/views/contextualviews/impl/ContextualViewComponent.java deleted file mode 100644 index 11306d0..0000000 --- a/taverna-workbench-contextual-views-impl/src/main/java/net/sf/taverna/t2/workbench/ui/views/contextualviews/impl/ContextualViewComponent.java +++ /dev/null @@ -1,389 +0,0 @@ -package net.sf.taverna.t2.workbench.ui.views.contextualviews.impl; - -import static java.awt.GridBagConstraints.BOTH; -import static java.awt.GridBagConstraints.CENTER; -import static java.awt.GridBagConstraints.HORIZONTAL; -import static java.awt.GridBagConstraints.LINE_START; -import static java.awt.GridBagConstraints.NONE; -import static net.sf.taverna.t2.lang.ui.ShadedLabel.BLUE; -import static net.sf.taverna.t2.lang.ui.ShadedLabel.GREEN; -import static net.sf.taverna.t2.lang.ui.ShadedLabel.ORANGE; -import static net.sf.taverna.t2.workbench.icons.WorkbenchIcons.minusIcon; -import static net.sf.taverna.t2.workbench.icons.WorkbenchIcons.plusIcon; - -import java.awt.Color; -import java.awt.Frame; -import java.awt.GridBagConstraints; -import java.awt.GridBagLayout; -import java.awt.event.ActionEvent; -import java.awt.event.ActionListener; -import java.awt.event.MouseAdapter; -import java.awt.event.MouseEvent; -import java.util.ArrayList; -import java.util.Collections; -import java.util.Comparator; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.Map.Entry; -import java.util.Set; - -import javax.swing.Action; -import javax.swing.ImageIcon; -import javax.swing.JButton; -import javax.swing.JLabel; -import javax.swing.JPanel; -import javax.swing.JScrollPane; -import javax.swing.SwingUtilities; -import javax.swing.Timer; - -import net.sf.taverna.t2.lang.observer.Observable; -import net.sf.taverna.t2.lang.observer.Observer; -import net.sf.taverna.t2.lang.observer.SwingAwareObserver; -import net.sf.taverna.t2.lang.ui.ShadedLabel; -import net.sf.taverna.t2.workbench.edits.EditManager; -import net.sf.taverna.t2.workbench.edits.EditManager.EditManagerEvent; -import net.sf.taverna.t2.workbench.selection.DataflowSelectionModel; -import net.sf.taverna.t2.workbench.selection.SelectionManager; -import net.sf.taverna.t2.workbench.selection.events.DataflowSelectionMessage; -import net.sf.taverna.t2.workbench.selection.events.SelectionManagerEvent; -import net.sf.taverna.t2.workbench.selection.events.WorkflowBundleSelectionEvent; -import net.sf.taverna.t2.workbench.ui.Utils; -import net.sf.taverna.t2.workbench.ui.views.contextualviews.ContextualView; -import net.sf.taverna.t2.workbench.ui.views.contextualviews.activity.ContextualViewFactory; -import net.sf.taverna.t2.workbench.ui.views.contextualviews.activity.ContextualViewFactoryRegistry; -import net.sf.taverna.t2.workbench.ui.zaria.UIComponentSPI; -import uk.org.taverna.scufl2.api.container.WorkflowBundle; - -@SuppressWarnings("serial") -public class ContextualViewComponent extends JScrollPane implements UIComponentSPI { - /** delay before contextual view is redrawn */ - private static final int DELAY = 250; - private static final Color[] colors = new Color[] { BLUE, GREEN, ORANGE }; - // HACK ALERT! - public static boolean selfGenerated = false; - - private Observer<DataflowSelectionMessage> dataflowSelectionListener = new DataflowSelectionListener(); - private SelectionManager selectionManager; - private ContextualViewFactoryRegistry contextualViewFactoryRegistry; - GridBagConstraints gbc; - protected Map<JPanel, SectionLabel> panelToLabelMap = new HashMap<>(); - private String lastOpenedSectionName = ""; - private JPanel mainPanel; - private List<JPanel> shownComponents = null; - int colorIndex = 0; - private Timer updateSelectionTimer = null; - private Object lastSelectedObject = null; - - private static final Comparator<ContextualView> viewComparator = new Comparator<ContextualView>() { - @Override - public int compare(ContextualView o1, ContextualView o2) { - return o1.getPreferredPosition() - o2.getPreferredPosition(); - } - }; - - public ContextualViewComponent(EditManager editManager, - SelectionManager selectionManager, - ContextualViewFactoryRegistry contextualViewFactoryRegistry) { - this.selectionManager = selectionManager; - this.contextualViewFactoryRegistry = contextualViewFactoryRegistry; - updateSelectionTimer = new Timer(DELAY, updateSelectionListener); - updateSelectionTimer.setRepeats(false); - - initialise(); - - editManager.addObserver(new EditManagerObserver()); - selectionManager.addObserver(new SelectionManagerObserver()); - } - - @Override - public ImageIcon getIcon() { - // TODO Auto-generated method stub - return null; - } - - @Override - public String getName() { - return "Details"; - } - - private void initialise() { - mainPanel = new JPanel(new GridBagLayout()); - this.setViewportView(mainPanel); - } - - @Override - public void onDisplay() { - } - - @Override - public void onDispose() { - updateSelectionTimer.stop(); - } - - @SuppressWarnings("unchecked") - private void updateContextualView(List<ContextualViewFactory<?>> viewFactories, - Object selection) { - if (selection == lastSelectedObject) - return; - lastSelectedObject = selection; - mainPanel = new JPanel(new GridBagLayout()); - panelToLabelMap.clear(); - - GridBagConstraints gbc = new GridBagConstraints(); - gbc.gridx = 0; - gbc.weightx = 0.1; - gbc.fill = HORIZONTAL; - - gbc.gridy = 0; - shownComponents = new ArrayList<>(); - List<ContextualView> views = new ArrayList<>(); - for (ContextualViewFactory<?> cvf : viewFactories) - views.addAll(((ContextualViewFactory<Object>) cvf) - .getViews(selection)); - Collections.sort(views, viewComparator); - colorIndex = 0; - if (views.isEmpty()) - mainPanel.add(new JLabel("No details available")); - else - populateContextualView(viewFactories, gbc, views); - gbc.weighty = 0.1; - gbc.fill = BOTH; - mainPanel.add(new JPanel(), gbc); - // mainPanel.revalidate(); - // mainPanel.repaint(); - this.setViewportView(mainPanel); - // this.revalidate(); - // this.repaint(); - } - - private void populateContextualView( - List<ContextualViewFactory<?>> viewFactories, - GridBagConstraints gbc, List<ContextualView> views) { - JPanel firstPanel = null; - JPanel lastOpenedSection = null; - for (ContextualView view : views) { - SectionLabel label = new SectionLabel(view.getViewTitle(), nextColor()); - mainPanel.add(label, gbc); - gbc.gridy++; - JPanel subPanel = new JPanel(); - if (view.getViewTitle().equals(lastOpenedSectionName)) - lastOpenedSection = subPanel; - subPanel.setLayout(new GridBagLayout()); - - GridBagConstraints constraints = new GridBagConstraints(); - constraints.gridx = 0; - constraints.gridy = 0; - constraints.weightx = 0.1; - constraints.weighty = 0; - constraints.anchor = CENTER; - constraints.fill = HORIZONTAL; - - subPanel.add(view, constraints); - Frame frame = Utils.getParentFrame(this); - Action configureAction = view.getConfigureAction(frame); - if (configureAction != null) { - JButton configButton = new JButton(configureAction); - if (configButton.getText() == null - || configButton.getText().isEmpty()) - configButton.setText("Configure"); - constraints.gridy++; - constraints.fill = NONE; - constraints.anchor = LINE_START; - subPanel.add(configButton, constraints); - } - if (firstPanel == null) - firstPanel = subPanel; - mainPanel.add(subPanel, gbc); - shownComponents.add(subPanel); - gbc.gridy++; - if (viewFactories.size() != 1) - makeCloseable(subPanel, label); - else { - lastOpenedSectionName = label.getText(); - lastOpenedSection = subPanel; - panelToLabelMap.put(subPanel, label); - subPanel.setVisible(false); - } - } - if (lastOpenedSection != null) - openSection(lastOpenedSection); - else if (firstPanel != null) - openSection(firstPanel); - } - - private void clearContextualView() { - lastSelectedObject = null; - mainPanel = new JPanel(new GridBagLayout()); - mainPanel.add(new JLabel("No details available")); - this.setViewportView(mainPanel); - this.revalidate(); - } - - public void updateSelection(Object selectedItem) { - findContextualView(selectedItem); - } - - private Runnable updateSelectionRunnable = new Runnable() { - @Override - public void run() { - Object selection = getSelection(); - if (selection == null) - clearContextualView(); - else - updateSelection(selection); - } - }; - - private ActionListener updateSelectionListener = new ActionListener() { - @Override - public void actionPerformed(ActionEvent e) { - SwingUtilities.invokeLater(updateSelectionRunnable); - } - }; - - public void updateSelection() { - updateSelectionTimer.restart(); - } - - private Object getSelection() { - WorkflowBundle workflowBundle = selectionManager.getSelectedWorkflowBundle(); - - /* - * If there is no currently opened dataflow, clear the contextual view - * panel - */ - if (workflowBundle == null) { - return null; - } - DataflowSelectionModel selectionModel = selectionManager - .getDataflowSelectionModel(workflowBundle); - Set<Object> selection = selectionModel.getSelection(); - - /* - * If the dataflow is opened but no component of the dataflow is - * selected, clear the contextual view panel - */ - if (selection.isEmpty()) - return null; - return selection.iterator().next(); - } - - private void findContextualView(Object selection) { - List<ContextualViewFactory<?>> viewFactoriesForBeanType = contextualViewFactoryRegistry - .getViewFactoriesForObject(selection); - updateContextualView(viewFactoriesForBeanType, selection); - } - - private final class SelectionManagerObserver extends SwingAwareObserver<SelectionManagerEvent> { - @Override - public void notifySwing(Observable<SelectionManagerEvent> sender, SelectionManagerEvent message) { - if (message instanceof WorkflowBundleSelectionEvent) - bundleSelected((WorkflowBundleSelectionEvent) message); - } - - private void bundleSelected(WorkflowBundleSelectionEvent event) { - WorkflowBundle oldBundle = event - .getPreviouslySelectedWorkflowBundle(); - WorkflowBundle newBundle = event.getSelectedWorkflowBundle(); - - if (oldBundle != null) - selectionManager.getDataflowSelectionModel(oldBundle) - .removeObserver(dataflowSelectionListener); - if (newBundle != null) - selectionManager.getDataflowSelectionModel(newBundle) - .addObserver(dataflowSelectionListener); - lastSelectedObject = null; - updateSelection(); - } - } - - private final class DataflowSelectionListener extends SwingAwareObserver<DataflowSelectionMessage> { - @Override - public void notifySwing(Observable<DataflowSelectionMessage> sender, - DataflowSelectionMessage message) { - updateSelection(); - } - } - - private final class EditManagerObserver extends SwingAwareObserver<EditManagerEvent> { - @Override - public void notifySwing(Observable<EditManagerEvent> sender, EditManagerEvent message) { - Object selection = getSelection(); - if ((selection != lastSelectedObject) && !selfGenerated) { - lastSelectedObject = null; - refreshView(); - } - } - } - - public void refreshView() { - if (mainPanel != null) - updateSelection(); - } - - private final class SectionLabel extends ShadedLabel { - private JLabel expand; - - private SectionLabel(String text, Color colour) { - super(text, colour); - expand = new JLabel(minusIcon); - add(expand, 0); - setExpanded(true); - } - - public void setExpanded(boolean expanded) { - if (expanded) - expand.setIcon(minusIcon); - else - expand.setIcon(plusIcon); - } - } - - private void makeCloseable(JPanel panel, SectionLabel label) { - panel.setVisible(false); - if (panelToLabelMap.get(panel) != label) { - panelToLabelMap.put(panel, label); - // Only add mouse listener once - label.addMouseListener(new SectionOpener(panel)); - } - } - - protected class SectionOpener extends MouseAdapter { - private final JPanel sectionToOpen; - - public SectionOpener(JPanel sectionToOpen) { - this.sectionToOpen = sectionToOpen; - } - - @Override - public void mouseClicked(MouseEvent e) { - openSection(sectionToOpen); - } - } - - public synchronized void openSection(JPanel sectionToOpen) { - lastOpenedSectionName = ""; - for (Entry<JPanel, SectionLabel> entry : panelToLabelMap.entrySet()) { - JPanel section = entry.getKey(); - SectionLabel sectionLabel = entry.getValue(); - - if (section != sectionToOpen) - section.setVisible(false); - else { - section.setVisible(!section.isVisible()); - if (section.isVisible()) - lastOpenedSectionName = sectionLabel.getText(); - } - sectionLabel.setExpanded(section.isVisible()); - } - this.revalidate(); - this.repaint(); - } - - private Color nextColor() { - if (colorIndex >= colors.length) - colorIndex = 0; - return colors[colorIndex++]; - } -} http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench/blob/dc466d6d/taverna-workbench-contextual-views-impl/src/main/java/net/sf/taverna/t2/workbench/ui/views/contextualviews/impl/ContextualViewComponentFactory.java ---------------------------------------------------------------------- diff --git a/taverna-workbench-contextual-views-impl/src/main/java/net/sf/taverna/t2/workbench/ui/views/contextualviews/impl/ContextualViewComponentFactory.java b/taverna-workbench-contextual-views-impl/src/main/java/net/sf/taverna/t2/workbench/ui/views/contextualviews/impl/ContextualViewComponentFactory.java deleted file mode 100644 index db43a0d..0000000 --- a/taverna-workbench-contextual-views-impl/src/main/java/net/sf/taverna/t2/workbench/ui/views/contextualviews/impl/ContextualViewComponentFactory.java +++ /dev/null @@ -1,64 +0,0 @@ -/******************************************************************************* - * Copyright (C) 2007-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 - ******************************************************************************/ -package net.sf.taverna.t2.workbench.ui.views.contextualviews.impl; - -import javax.swing.ImageIcon; - -import net.sf.taverna.t2.workbench.edits.EditManager; -import net.sf.taverna.t2.workbench.selection.SelectionManager; -import net.sf.taverna.t2.workbench.ui.views.contextualviews.activity.ContextualViewFactoryRegistry; -import net.sf.taverna.t2.workbench.ui.zaria.UIComponentFactorySPI; -import net.sf.taverna.t2.workbench.ui.zaria.UIComponentSPI; - -public class ContextualViewComponentFactory implements UIComponentFactorySPI { - private EditManager editManager; - private SelectionManager selectionManager; - private ContextualViewFactoryRegistry contextualViewFactoryRegistry; - - @Override - public UIComponentSPI getComponent() { - return new ContextualViewComponent(editManager, selectionManager, - contextualViewFactoryRegistry); - } - - @Override - public ImageIcon getIcon() { - return null; - } - - @Override - public String getName() { - return "Details"; - } - - public void setEditManager(EditManager editManager) { - this.editManager = editManager; - } - - public void setSelectionManager(SelectionManager selectionManager) { - this.selectionManager = selectionManager; - } - - public void setContextualViewFactoryRegistry( - ContextualViewFactoryRegistry contextualViewFactoryRegistry) { - this.contextualViewFactoryRegistry = contextualViewFactoryRegistry; - } -} http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench/blob/dc466d6d/taverna-workbench-contextual-views-impl/src/main/java/net/sf/taverna/t2/workbench/ui/views/contextualviews/inputport/InputPortContextualView.java ---------------------------------------------------------------------- diff --git a/taverna-workbench-contextual-views-impl/src/main/java/net/sf/taverna/t2/workbench/ui/views/contextualviews/inputport/InputPortContextualView.java b/taverna-workbench-contextual-views-impl/src/main/java/net/sf/taverna/t2/workbench/ui/views/contextualviews/inputport/InputPortContextualView.java deleted file mode 100644 index c1b3d06..0000000 --- a/taverna-workbench-contextual-views-impl/src/main/java/net/sf/taverna/t2/workbench/ui/views/contextualviews/inputport/InputPortContextualView.java +++ /dev/null @@ -1,76 +0,0 @@ -/******************************************************************************* - * Copyright (C) 2007 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 - ******************************************************************************/ -package net.sf.taverna.t2.workbench.ui.views.contextualviews.inputport; - -import static java.awt.FlowLayout.LEFT; - -import java.awt.FlowLayout; - -import javax.swing.JComponent; -import javax.swing.JLabel; -import javax.swing.JPanel; -import javax.swing.border.EmptyBorder; - -import uk.org.taverna.scufl2.api.port.InputActivityPort; -import net.sf.taverna.t2.workbench.ui.views.contextualviews.ContextualView; - -/** - * Contextual view for dataflow procerssor's input ports. - * - * @author Alex Nenadic - */ -class InputPortContextualView extends ContextualView { - private static final String NO_DETAILS_AVAILABLE_HTML = "<html><body>" - + "<i>No details available.</i>" + "</body><html>"; - private static final long serialVersionUID = -7743029534480678624L; - - private InputActivityPort inputPort; - private JPanel inputPortView; - - public InputPortContextualView(InputActivityPort inputport) { - this.inputPort = inputport; - initView(); - } - - @Override - public JComponent getMainFrame() { - refreshView(); - return inputPortView; - } - - @Override - public String getViewTitle() { - return "Service input port: " + inputPort.getName(); - } - - @Override - public void refreshView() { - inputPortView = new JPanel(new FlowLayout(LEFT)); - inputPortView.setBorder(new EmptyBorder(5, 5, 5, 5)); - JLabel label = new JLabel(NO_DETAILS_AVAILABLE_HTML); - inputPortView.add(label); - } - - @Override - public int getPreferredPosition() { - return 100; - } -} http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench/blob/dc466d6d/taverna-workbench-contextual-views-impl/src/main/java/net/sf/taverna/t2/workbench/ui/views/contextualviews/inputport/InputPortContextualViewFactory.java ---------------------------------------------------------------------- diff --git a/taverna-workbench-contextual-views-impl/src/main/java/net/sf/taverna/t2/workbench/ui/views/contextualviews/inputport/InputPortContextualViewFactory.java b/taverna-workbench-contextual-views-impl/src/main/java/net/sf/taverna/t2/workbench/ui/views/contextualviews/inputport/InputPortContextualViewFactory.java deleted file mode 100644 index 490e5b7..0000000 --- a/taverna-workbench-contextual-views-impl/src/main/java/net/sf/taverna/t2/workbench/ui/views/contextualviews/inputport/InputPortContextualViewFactory.java +++ /dev/null @@ -1,48 +0,0 @@ -/******************************************************************************* - * Copyright (C) 2007 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 - ******************************************************************************/ -package net.sf.taverna.t2.workbench.ui.views.contextualviews.inputport; - -import java.util.Arrays; -import java.util.List; - -import net.sf.taverna.t2.workbench.ui.views.contextualviews.ContextualView; -import net.sf.taverna.t2.workbench.ui.views.contextualviews.activity.ContextualViewFactory; -import uk.org.taverna.scufl2.api.port.InputActivityPort; - -/** - * A factory of contextual views for dataflow proessor's (i.e. its associated - * activity's) input ports. - * - * @author Alex Nenadic - */ -public class InputPortContextualViewFactory implements - ContextualViewFactory<InputActivityPort> { - @Override - public boolean canHandle(Object object) { - return object instanceof InputActivityPort; - } - - @Override - public List<ContextualView> getViews(InputActivityPort inputport) { - return Arrays.asList(new ContextualView[] { - new InputPortContextualView(inputport)}); - } -} http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench/blob/dc466d6d/taverna-workbench-contextual-views-impl/src/main/java/net/sf/taverna/t2/workbench/ui/views/contextualviews/merge/MergeConfigurationAction.java ---------------------------------------------------------------------- diff --git a/taverna-workbench-contextual-views-impl/src/main/java/net/sf/taverna/t2/workbench/ui/views/contextualviews/merge/MergeConfigurationAction.java b/taverna-workbench-contextual-views-impl/src/main/java/net/sf/taverna/t2/workbench/ui/views/contextualviews/merge/MergeConfigurationAction.java deleted file mode 100644 index 567cc4b..0000000 --- a/taverna-workbench-contextual-views-impl/src/main/java/net/sf/taverna/t2/workbench/ui/views/contextualviews/merge/MergeConfigurationAction.java +++ /dev/null @@ -1,79 +0,0 @@ -/******************************************************************************* - * Copyright (C) 2007 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 - ******************************************************************************/ -package net.sf.taverna.t2.workbench.ui.views.contextualviews.merge; - -import java.awt.event.ActionEvent; -import java.util.List; - -import javax.swing.AbstractAction; - -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.t2.workflow.edits.ReorderMergePositionsEdit; - -import org.apache.log4j.Logger; - -import uk.org.taverna.scufl2.api.container.WorkflowBundle; -import uk.org.taverna.scufl2.api.core.DataLink; - -/** - * Configuration action for a Merge. This action changes the order of - * merge's incoming ports. - * - * @author Alex Nenadic - * - */ -@SuppressWarnings("serial") -class MergeConfigurationAction extends AbstractAction { - private static Logger logger = Logger - .getLogger(MergeConfigurationAction.class); - - private final List<DataLink> reorderedDataLinksList; - private final List<DataLink> datalinks; - private final EditManager editManager; - private final SelectionManager selectionManager; - - MergeConfigurationAction(List<DataLink> datalinks, - List<DataLink> reorderedDataLinksList, EditManager editManager, - SelectionManager selectionManager) { - this.datalinks = datalinks; - this.reorderedDataLinksList = reorderedDataLinksList; - this.editManager = editManager; - this.selectionManager = selectionManager; - } - - @Override - public void actionPerformed(ActionEvent e) { - ReorderMergePositionsEdit edit = new ReorderMergePositionsEdit( - datalinks, reorderedDataLinksList); - - WorkflowBundle bundle = selectionManager.getSelectedWorkflowBundle(); - - try { - editManager.doDataflowEdit(bundle, edit); - } catch (IllegalStateException ex1) { - logger.error("Could not configure merge", ex1); - } catch (EditException ex2) { - logger.error("Could not configure merge", ex2); - } - } -} http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench/blob/dc466d6d/taverna-workbench-contextual-views-impl/src/main/java/net/sf/taverna/t2/workbench/ui/views/contextualviews/merge/MergeConfigurationView.java ---------------------------------------------------------------------- diff --git a/taverna-workbench-contextual-views-impl/src/main/java/net/sf/taverna/t2/workbench/ui/views/contextualviews/merge/MergeConfigurationView.java b/taverna-workbench-contextual-views-impl/src/main/java/net/sf/taverna/t2/workbench/ui/views/contextualviews/merge/MergeConfigurationView.java deleted file mode 100644 index 66eeb3e..0000000 --- a/taverna-workbench-contextual-views-impl/src/main/java/net/sf/taverna/t2/workbench/ui/views/contextualviews/merge/MergeConfigurationView.java +++ /dev/null @@ -1,233 +0,0 @@ -package net.sf.taverna.t2.workbench.ui.views.contextualviews.merge; - -import static java.awt.BorderLayout.EAST; -import static java.awt.BorderLayout.NORTH; -import static java.awt.BorderLayout.SOUTH; -import static java.lang.Math.max; -import static javax.swing.BoxLayout.Y_AXIS; -import static javax.swing.ListSelectionModel.SINGLE_SELECTION; -import static javax.swing.ScrollPaneConstants.HORIZONTAL_SCROLLBAR_ALWAYS; -import static javax.swing.ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS; -import static javax.swing.SwingConstants.CENTER; -import static javax.swing.SwingConstants.LEFT; -import static javax.swing.SwingConstants.RIGHT; -import static net.sf.taverna.t2.workbench.icons.WorkbenchIcons.downArrowIcon; -import static net.sf.taverna.t2.workbench.icons.WorkbenchIcons.upArrowIcon; - -import java.awt.BorderLayout; -import java.awt.Dimension; -import java.awt.FlowLayout; -import java.awt.FontMetrics; -import java.awt.Frame; -import java.awt.event.ActionEvent; -import java.util.ArrayList; -import java.util.List; - -import javax.swing.AbstractAction; -import javax.swing.BoxLayout; -import javax.swing.DefaultListModel; -import javax.swing.JButton; -import javax.swing.JLabel; -import javax.swing.JList; -import javax.swing.JPanel; -import javax.swing.JScrollPane; -import javax.swing.border.CompoundBorder; -import javax.swing.border.EmptyBorder; -import javax.swing.border.EtchedBorder; -import javax.swing.event.ListSelectionEvent; -import javax.swing.event.ListSelectionListener; - -import net.sf.taverna.t2.workbench.edits.EditManager; -import net.sf.taverna.t2.workbench.helper.HelpEnabledDialog; -import net.sf.taverna.t2.workbench.selection.SelectionManager; -import uk.org.taverna.scufl2.api.core.DataLink; - -@SuppressWarnings("serial") -public class MergeConfigurationView extends HelpEnabledDialog { - private static final String TITLE = "<html><body><b>Order of incoming links</b></body></html>"; - - private List<DataLink> dataLinks; - private List<DataLink> reorderedDataLinks; - /** Ordered list of labels for dataLinks to be displayed to the user */ - private DefaultListModel<String> labelListModel; - /** JList that displays the labelListModel */ - JList<String> list; - /** Button to push the dataLink up the list */ - private JButton upButton; - /** Button to push the dataLink down the list */ - private JButton downButton; - private final EditManager editManager; - private final SelectionManager selectionManager; - - public MergeConfigurationView(List<DataLink> dataLinks, EditManager editManager, - SelectionManager selectionManager) { - super((Frame)null, "Merge Configuration", true); - - this.dataLinks = new ArrayList<>(dataLinks); - reorderedDataLinks = new ArrayList<>(dataLinks); - this.editManager = editManager; - this.selectionManager = selectionManager; - labelListModel = new DefaultListModel<>(); - for (DataLink dataLink : dataLinks) - labelListModel.addElement(dataLink.toString()); - - initComponents(); - } - - private void initComponents() { - getContentPane().setLayout(new BorderLayout()); - - JPanel listPanel = new JPanel(); - listPanel.setLayout(new BorderLayout()); - listPanel.setBorder(new CompoundBorder(new EmptyBorder(10, 10, 10, 10), - new EtchedBorder())); - - JLabel title = new JLabel(TITLE); - title.setBorder(new EmptyBorder(5, 5, 5, 5)); - listPanel.add(title, NORTH); - - list = new JList<>(labelListModel); - list.setSelectionMode(SINGLE_SELECTION); - list.setVisibleRowCount(-1); - list.addListSelectionListener(new ListSelectionListener() { - /** - * Enable and disable up and down buttons based on which item in the - * list is selected - */ - @Override - public void valueChanged(ListSelectionEvent e) { - int index = list.getSelectedIndex(); - if ((index == -1) || (index == 0 && labelListModel.size() == 0)) { - // nothing selected or only one item in the list - upButton.setEnabled(false); - downButton.setEnabled(false); - } else { - upButton.setEnabled(index > 0); - downButton.setEnabled(index < labelListModel.size() - 1); - } - } - }); - - final JScrollPane listScroller = new JScrollPane(list); - listScroller.setBorder(new EmptyBorder(5, 5, 5, 5)); - listScroller.setBackground(listPanel.getBackground()); - listScroller.setHorizontalScrollBarPolicy(HORIZONTAL_SCROLLBAR_ALWAYS); - listScroller.setVerticalScrollBarPolicy(VERTICAL_SCROLLBAR_ALWAYS); - // Set the size of scroll pane to make all list items visible - FontMetrics fm = listScroller.getFontMetrics(this.getFont()); - int listScrollerHeight = fm.getHeight() * labelListModel.size() + 75; //+75 just in case - listScroller.setPreferredSize(new Dimension(listScroller - .getPreferredSize().width, max(listScrollerHeight, - listScroller.getPreferredSize().height))); - listPanel.add(listScroller, BorderLayout.CENTER); - - JPanel upDownButtonPanel = new JPanel(); - upDownButtonPanel.setLayout(new BoxLayout(upDownButtonPanel, Y_AXIS)); - upDownButtonPanel.setBorder(new EmptyBorder(5, 5, 5, 5)); - - upButton = new JButton(new AbstractAction() { - @Override - public void actionPerformed(ActionEvent e) { - int index = list.getSelectedIndex(); - if (index != -1) { - // Swap the labels - String label = (String) labelListModel.elementAt(index); - labelListModel.set(index, labelListModel.get(index - 1)); - labelListModel.set(index - 1, label); - // Swap the dataLinks - DataLink dataLink = reorderedDataLinks.get(index); - reorderedDataLinks.set(index, - reorderedDataLinks.get(index - 1)); - reorderedDataLinks.set(index - 1, dataLink); - // Make the pushed item selected - list.setSelectedIndex(index - 1); - // Refresh the list - listScroller.repaint(); - listScroller.revalidate(); - } - } - }); - upButton.setIcon(upArrowIcon); - upButton.setText("Up"); - // Place text to the right of icon, vertically centered - upButton.setVerticalTextPosition(CENTER); - upButton.setHorizontalTextPosition(RIGHT); - // Set the horizontal alignment of the icon and text - upButton.setHorizontalAlignment(LEFT); - upButton.setEnabled(false); - upDownButtonPanel.add(upButton); - - downButton = new JButton(new AbstractAction() { - @Override - public void actionPerformed(ActionEvent e) { - int index = list.getSelectedIndex(); - if (index != -1) { - // Swap the labels - String label = (String) labelListModel.elementAt(index); - labelListModel.set(index, labelListModel.get(index + 1)); - labelListModel.set(index + 1, label); - // Swap the dataLinks - DataLink dataLink = reorderedDataLinks.get(index); - reorderedDataLinks.set(index, - reorderedDataLinks.get(index + 1)); - reorderedDataLinks.set(index + 1, dataLink); - // Make the pushed item selected - list.setSelectedIndex(index + 1); - // Refresh the list - list.repaint(); - listScroller.revalidate(); - } - } - }); - downButton.setIcon(downArrowIcon); - downButton.setText("Down"); - // Place text to the right of icon, vertically centered - downButton.setVerticalTextPosition(CENTER); - downButton.setHorizontalTextPosition(RIGHT); - // Set the horizontal alignment of the icon and text - downButton.setHorizontalAlignment(LEFT); - downButton.setEnabled(false); - // set the up button to be of the same size as down button - upButton.setPreferredSize(downButton.getPreferredSize()); - upButton.setMaximumSize(downButton.getPreferredSize()); - upButton.setMinimumSize(downButton.getPreferredSize()); - upDownButtonPanel.add(downButton); - - listPanel.add(upDownButtonPanel, EAST); - - JPanel buttonPanel = new JPanel(new FlowLayout(FlowLayout.RIGHT)); - - JButton jbOK = new JButton("OK"); - jbOK.addActionListener(new AbstractAction() { - @Override - public void actionPerformed(ActionEvent e) { - new MergeConfigurationAction(dataLinks, reorderedDataLinks, - editManager, selectionManager).actionPerformed(e); - closeDialog(); - } - }); - - JButton jbCancel = new JButton("Cancel"); - jbCancel.addActionListener(new AbstractAction() { - @Override - public void actionPerformed(ActionEvent e) { - closeDialog(); - } - }); - - buttonPanel.add(jbOK); - buttonPanel.add(jbCancel); - - getContentPane().add(listPanel, BorderLayout.CENTER); - getContentPane().add(buttonPanel, SOUTH); - pack(); - } - - /** - * Close the dialog. - */ - private void closeDialog() { - setVisible(false); - dispose(); - } -} http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench/blob/dc466d6d/taverna-workbench-contextual-views-impl/src/main/java/net/sf/taverna/t2/workbench/ui/views/contextualviews/merge/MergeContextualView.java ---------------------------------------------------------------------- diff --git a/taverna-workbench-contextual-views-impl/src/main/java/net/sf/taverna/t2/workbench/ui/views/contextualviews/merge/MergeContextualView.java b/taverna-workbench-contextual-views-impl/src/main/java/net/sf/taverna/t2/workbench/ui/views/contextualviews/merge/MergeContextualView.java deleted file mode 100644 index deb09fb..0000000 --- a/taverna-workbench-contextual-views-impl/src/main/java/net/sf/taverna/t2/workbench/ui/views/contextualviews/merge/MergeContextualView.java +++ /dev/null @@ -1,150 +0,0 @@ -/******************************************************************************* - * Copyright (C) 2007 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 - ******************************************************************************/ -package net.sf.taverna.t2.workbench.ui.views.contextualviews.merge; - -import static java.awt.BorderLayout.CENTER; -import static java.awt.BorderLayout.SOUTH; -import static java.awt.FlowLayout.LEFT; -import static net.sf.taverna.t2.lang.ui.HtmlUtils.buildTableOpeningTag; -import static net.sf.taverna.t2.lang.ui.HtmlUtils.createEditorPane; -import static net.sf.taverna.t2.lang.ui.HtmlUtils.getHtmlHead; - -import java.awt.BorderLayout; -import java.awt.FlowLayout; -import java.awt.event.ActionEvent; -import java.util.List; - -import javax.swing.AbstractAction; -import javax.swing.JButton; -import javax.swing.JComponent; -import javax.swing.JEditorPane; -import javax.swing.JPanel; - -import net.sf.taverna.t2.workbench.configuration.colour.ColourManager; -import net.sf.taverna.t2.workbench.edits.EditManager; -import net.sf.taverna.t2.workbench.selection.SelectionManager; -import net.sf.taverna.t2.workbench.ui.views.contextualviews.ContextualView; -import net.sf.taverna.t2.workflowmodel.Merge; -import uk.org.taverna.scufl2.api.common.Scufl2Tools; -import uk.org.taverna.scufl2.api.container.WorkflowBundle; -import uk.org.taverna.scufl2.api.core.DataLink; - -/** - * Contextual view for a {@link Merge}. - * - * @author Alex Nenadic - */ -@SuppressWarnings("serial") -class MergeContextualView extends ContextualView { - @SuppressWarnings("unused") - private DataLink dataLink; - private List<DataLink> datalinks; - @SuppressWarnings("unused") - private WorkflowBundle workflow; - private JEditorPane editorPane; - private final EditManager editManager; - private final ColourManager colourManager; - private final SelectionManager selectionManager; - - // TODO inject from Spring via factory? - private Scufl2Tools scufl2Tools = new Scufl2Tools(); - - public MergeContextualView(DataLink dataLink, EditManager editManager, - SelectionManager selectionManager, ColourManager colourManager) { - this.dataLink = dataLink; - this.selectionManager = selectionManager; - datalinks = scufl2Tools.datalinksTo(dataLink.getSendsTo()); - this.editManager = editManager; - this.colourManager = colourManager; - workflow = selectionManager.getSelectedWorkflowBundle(); - initView(); - } - - @Override - public JComponent getMainFrame() { - editorPane = createEditorPane(buildHtml()); - return panelForHtml(editorPane); - } - - @Override - public String getViewTitle() { - return "Merge Position"; - } - - /** - * Update the view with the latest information from the configuration bean. - */ - @Override - public void refreshView() { - editorPane.setText(buildHtml()); - repaint(); - } - - private String buildHtml() { - StringBuilder html = new StringBuilder( - getHtmlHead(getBackgroundColour())); - html.append(buildTableOpeningTag()) - .append("<tr><td colspan=\"2\"><b>") - .append(getViewTitle()) - .append("</b></td></tr>") - .append("<tr><td colspan=\"2\"><b>Ordered incoming links</b></td></tr>"); - - int counter = 1; - for (DataLink datalink : datalinks) - html.append("<tr><td>").append(counter++).append(".</td><td>") - .append(datalink).append("</td></tr>"); - - return html.append("</table>").append("</body></html>").toString(); - } - - protected JPanel panelForHtml(JEditorPane editorPane) { - final JPanel panel = new JPanel(); - - JPanel buttonPanel = new JPanel(new FlowLayout(LEFT)); - - JButton configureButton = new JButton(new AbstractAction() { - @Override - public void actionPerformed(ActionEvent e) { - MergeConfigurationView mergeConfigurationView = new MergeConfigurationView( - datalinks, editManager, selectionManager); - mergeConfigurationView.setLocationRelativeTo(panel); - mergeConfigurationView.setVisible(true); - } - }); - configureButton.setText("Configure"); - buttonPanel.add(configureButton); - - panel.setLayout(new BorderLayout()); - panel.add(editorPane, CENTER); - panel.add(buttonPanel, SOUTH); - return panel; - } - - public String getBackgroundColour() { - return colourManager.getDefaultPropertyMap().get( - "net.sf.taverna.t2.workflowmodel.Merge"); - } - - @Override - public int getPreferredPosition() { - return 100; - } -}
