Removed outdated processor results rendering

.. no longer used as rendering is done through DataBundles


Project: http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench/repo
Commit: 
http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench/commit/f3a2ba94
Tree: 
http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench/tree/f3a2ba94
Diff: 
http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench/diff/f3a2ba94

Branch: refs/heads/master
Commit: f3a2ba94e8cc57670fa865db64598259edda4b38
Parents: 5d00187
Author: Stian Soiland-Reyes <[email protected]>
Authored: Fri Aug 19 12:26:41 2016 +0100
Committer: Stian Soiland-Reyes <[email protected]>
Committed: Fri Oct 21 09:17:18 2016 +0200

----------------------------------------------------------------------
 .../processor/ProcessorPortResultsViewTab.java  | 225 -------
 .../RenderedProcessorResultComponent.java       | 581 -------------------
 2 files changed, 806 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench/blob/f3a2ba94/taverna-results-view/src/main/java/org/apache/taverna/workbench/views/results/processor/ProcessorPortResultsViewTab.java
----------------------------------------------------------------------
diff --git 
a/taverna-results-view/src/main/java/org/apache/taverna/workbench/views/results/processor/ProcessorPortResultsViewTab.java
 
b/taverna-results-view/src/main/java/org/apache/taverna/workbench/views/results/processor/ProcessorPortResultsViewTab.java
deleted file mode 100644
index 43a85df..0000000
--- 
a/taverna-results-view/src/main/java/org/apache/taverna/workbench/views/results/processor/ProcessorPortResultsViewTab.java
+++ /dev/null
@@ -1,225 +0,0 @@
-package org.apache.taverna.workbench.views.results.processor;
-/*
- * 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.
- */
-
-import static java.awt.BorderLayout.CENTER;
-import static java.awt.BorderLayout.NORTH;
-import static java.awt.BorderLayout.WEST;
-import static 
org.apache.taverna.workbench.views.results.processor.ProcessorResultTreeNode.ProcessorResultTreeNodeState.RESULT_REFERENCE;
-
-import java.awt.BorderLayout;
-import java.awt.event.ActionEvent;
-import java.awt.event.ActionListener;
-import java.util.ArrayList;
-import java.util.Enumeration;
-import java.util.List;
-
-import javax.swing.JComboBox;
-import javax.swing.JLabel;
-import javax.swing.JPanel;
-import javax.swing.JScrollPane;
-import javax.swing.JSplitPane;
-import javax.swing.JTree;
-import javax.swing.tree.DefaultMutableTreeNode;
-import javax.swing.tree.TreeModel;
-import javax.swing.tree.TreePath;
-
-import org.apache.taverna.renderers.RendererRegistry;
-import 
org.apache.taverna.workbench.views.results.processor.FilteredProcessorValueTreeModel.FilterType;
-import 
org.apache.taverna.workbench.views.results.saveactions.SaveIndividualResultSPI;
-
-/**
- * A tab containing result tree for an input or output port of a processor
- * and a panel with rendered result
- * of the currently selected node in the tree.
- *
- * @author Alex Nenadic
- *
- */
-@SuppressWarnings("serial")
-public class ProcessorPortResultsViewTab extends JPanel{
-       /** Rendered result component */
-       private RenderedProcessorResultComponent renderedResultComponent;
-       private boolean isOutputPortTab = true;
-       private JTree resultsTree;
-       private String portName;
-       /** Panel holding the results tree*/
-       private JPanel treePanel;
-       /**
-        * Split pane holding the result tree panel on the left and rendering
-        * component on the right
-        */
-       private JSplitPane splitPanel;
-    private JComboBox<FilterType> filterChoiceBox;
-       private FilteredProcessorValueTreeModel filteredTreeModel;
-
-       private final RendererRegistry rendererRegistry;
-       private final List<SaveIndividualResultSPI> saveActions;
-
-       public ProcessorPortResultsViewTab(String portName, RendererRegistry 
rendererRegistry, List<SaveIndividualResultSPI> saveActions) {
-               this.portName = portName;
-               this.rendererRegistry = rendererRegistry;
-               this.saveActions = saveActions;
-               initComponents();
-       }
-
-       private void initComponents() {
-               setLayout(new BorderLayout());
-
-               /*
-                * Split pane containing a tree with results from an output 
port for the
-                * selected enactment and rendered result component for 
rendering an
-                * individual result currently selected from the results tree.
-                */
-               splitPanel = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT);
-
-               /*
-                * Results tree (containing T2References to all individual 
results for
-                * this port)
-                */
-               //resultsTree = new JTree(); // initially tree is empty - will 
be set when user selects a particular enactment
-
-               // Component for rendering individual results
-               renderedResultComponent = new RenderedProcessorResultComponent(
-                               rendererRegistry, saveActions);
-
-               treePanel = new JPanel();
-               treePanel.setLayout(new BorderLayout());
-               treePanel.add(new JLabel("Click to view values"), NORTH);
-               treePanel.add(new JScrollPane(resultsTree), CENTER);
-               splitPanel.setTopComponent(treePanel);
-               splitPanel.setBottomComponent(renderedResultComponent);
-               splitPanel.setDividerLocation(400);
-
-               // Add all to main panel
-               add(splitPanel, CENTER);
-       }
-
-       public void setIsOutputPortTab(boolean isOutputPortTab) {
-               this.isOutputPortTab  = isOutputPortTab;
-       }
-
-       public boolean getIsOutputPortTab() {
-               return this.isOutputPortTab;
-       }
-
-    private List<TreePath> expandedPaths = new ArrayList<TreePath>();
-    private TreePath selectionPath = null;
-
-       private void rememberPaths() {
-               expandedPaths.clear();
-               for (Enumeration<?> e = resultsTree
-                               .getExpandedDescendants(new 
TreePath(filteredTreeModel
-                                               .getRoot())); (e != null) && 
e.hasMoreElements();)
-                       expandedPaths.add((TreePath) e.nextElement());
-               selectionPath = resultsTree.getSelectionPath();
-       }
-
-       private void reinstatePaths() {
-               for (TreePath path : expandedPaths)
-                       if (filteredTreeModel.isShown((DefaultMutableTreeNode) 
path
-                                       .getLastPathComponent()))
-                               resultsTree.expandPath(path);
-               if (selectionPath != null) {
-                       if (filteredTreeModel
-                                       .isShown((DefaultMutableTreeNode) 
selectionPath
-                                                       
.getLastPathComponent()))
-                               resultsTree.setSelectionPath(selectionPath);
-                       else {
-                               resultsTree.clearSelection();
-                               renderedResultComponent.clearResult();
-                       }
-               }
-       }
-
-       private void updateTree() {
-               filteredTreeModel = (FilteredProcessorValueTreeModel) 
resultsTree
-                               .getModel();
-               filteredTreeModel.setFilter((FilterType) 
filterChoiceBox.getSelectedItem());
-               rememberPaths();
-               filteredTreeModel.reload();
-               resultsTree.setModel(filteredTreeModel);
-               reinstatePaths();
-       }
-
-       public void setResultsTree(JTree tree) {
-               resultsTree = tree;
-
-               treePanel.removeAll();
-               treePanel = new JPanel(new BorderLayout());
-               if (tree == null) {
-                       splitPanel.setVisible(false);
-                       revalidate();
-                       return;
-               }
-
-               TreeModel treeModel = tree.getModel();
-               int childCount = treeModel.getChildCount(treeModel.getRoot());
-               if (childCount == 0) {
-                   splitPanel.setVisible(false);
-                   revalidate();
-                   return;
-               }
-
-               splitPanel.setTopComponent(treePanel);
-               splitPanel.setBottomComponent(renderedResultComponent);
-               splitPanel.setVisible(true);
-
-               JPanel treeSubPanel = new JPanel();
-               treeSubPanel.setLayout(new BorderLayout());
-               treeSubPanel.add(new JLabel("Click in tree to"), WEST);
-               filterChoiceBox = new JComboBox<>(new FilterType[] { 
FilterType.ALL,
-                               FilterType.RESULTS, FilterType.ERRORS });
-               filterChoiceBox.addActionListener(new ActionListener() {
-                       @Override
-                       public void actionPerformed(ActionEvent e) {
-                               updateTree();
-                       }
-               });
-               treeSubPanel.add(filterChoiceBox);
-               treePanel.add(treeSubPanel, NORTH);
-               treePanel.add(new JScrollPane(resultsTree), CENTER);
-               splitPanel.setTopComponent(treePanel);
-
-               if (childCount == 1) {
-                       Object child = treeModel.getChild(treeModel.getRoot(), 
0);
-                       ProcessorResultTreeNode node = 
(ProcessorResultTreeNode) child;
-                       if (node.getState() == RESULT_REFERENCE)
-                               if (treeModel.getChildCount(child) == 0) {
-                                       TreePath path = new TreePath(new 
Object[] {
-                                                       treeModel.getRoot(), 
child });
-                                       tree.setSelectionPath(path);
-                                       splitPanel.setTopComponent(new 
JPanel());
-                                       splitPanel.setDividerLocation(0);
-                               }
-               }
-
-               revalidate();
-       }
-
-       public void setPortName(String portName) {
-               this.portName = portName;
-       }
-
-       public String getPortName() {
-               return portName;
-       }
-
-       public RenderedProcessorResultComponent getRenderedResultComponent() {
-               return renderedResultComponent;
-       }
-}

http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench/blob/f3a2ba94/taverna-results-view/src/main/java/org/apache/taverna/workbench/views/results/processor/RenderedProcessorResultComponent.java
----------------------------------------------------------------------
diff --git 
a/taverna-results-view/src/main/java/org/apache/taverna/workbench/views/results/processor/RenderedProcessorResultComponent.java
 
b/taverna-results-view/src/main/java/org/apache/taverna/workbench/views/results/processor/RenderedProcessorResultComponent.java
deleted file mode 100644
index 76196e6..0000000
--- 
a/taverna-results-view/src/main/java/org/apache/taverna/workbench/views/results/processor/RenderedProcessorResultComponent.java
+++ /dev/null
@@ -1,581 +0,0 @@
-package org.apache.taverna.workbench.views.results.processor;
-/*
- * 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.
- */
-
-import static java.awt.BorderLayout.CENTER;
-import static java.awt.BorderLayout.NORTH;
-import static java.awt.event.ItemEvent.SELECTED;
-import static javax.swing.BoxLayout.LINE_AXIS;
-import static javax.swing.SwingUtilities.invokeLater;
-import static org.apache.commons.lang.StringEscapeUtils.escapeHtml;
-import static org.apache.taverna.workbench.icons.WorkbenchIcons.refreshIcon;
-import static 
org.apache.taverna.workbench.views.results.processor.ProcessorResultTreeNode.ProcessorResultTreeNodeState.RESULT_REFERENCE;
-
-import java.awt.BorderLayout;
-import java.awt.Color;
-import java.awt.Component;
-import java.awt.FlowLayout;
-import java.awt.event.ActionEvent;
-import java.awt.event.ActionListener;
-import java.awt.event.ItemEvent;
-import java.awt.event.ItemListener;
-import java.io.IOException;
-import java.io.InputStream;
-import java.nio.file.Path;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-import javax.swing.BoxLayout;
-import javax.swing.DefaultComboBoxModel;
-import javax.swing.DefaultListCellRenderer;
-import javax.swing.JButton;
-import javax.swing.JCheckBox;
-import javax.swing.JComboBox;
-import javax.swing.JComponent;
-import javax.swing.JLabel;
-import javax.swing.JList;
-import javax.swing.JPanel;
-import javax.swing.JScrollPane;
-import javax.swing.JTextArea;
-import javax.swing.JTree;
-import javax.swing.ListCellRenderer;
-import javax.swing.border.EmptyBorder;
-import javax.swing.border.EtchedBorder;
-import javax.swing.text.JTextComponent;
-import javax.swing.tree.DefaultMutableTreeNode;
-import javax.swing.tree.DefaultTreeCellRenderer;
-
-import org.apache.log4j.Logger;
-import org.apache.taverna.databundle.DataBundles;
-import org.apache.taverna.databundle.ErrorDocument;
-import org.apache.taverna.lang.ui.DialogTextArea;
-import org.apache.taverna.renderers.Renderer;
-import org.apache.taverna.renderers.RendererException;
-import org.apache.taverna.renderers.RendererRegistry;
-import org.apache.taverna.renderers.RendererUtils;
-import org.apache.taverna.scufl2.api.port.OutputWorkflowPort;
-import 
org.apache.taverna.workbench.views.results.saveactions.SaveIndividualResultSPI;
-import org.apache.tika.detect.DefaultDetector;
-import org.apache.tika.detect.Detector;
-import org.apache.tika.metadata.Metadata;
-import org.apache.tika.mime.MediaType;
-
-import eu.medsea.mimeutil.MimeType;
-
-/**
- * Creates a component that renders an individual result from an output port.
- * The component can render the result according to the renderers existing for
- * the output port's MIME type or display an error document.
- *
- * @author Ian Dunlop
- * @author Alex Nenadic
- */
-@SuppressWarnings("serial")
-public class RenderedProcessorResultComponent extends JPanel {
-       private static final String WRAP_TEXT = "Wrap text";
-       private static final String ERROR_DOCUMENT = "Error Document";
-       private static Logger logger = Logger
-                       .getLogger(RenderedProcessorResultComponent.class);
-
-       /** Panel containing rendered result */
-       private JPanel renderedResultPanel;
-       /** Combo box containing possible result types */
-       private JComboBox<String> renderersComboBox;
-       /**
-        * Button to refresh (re-render) the result, especially needed for large
-        * results that are not rendered or are partially rendered and the user
-        * wished to re-render them
-        */
-       private JButton refreshButton;
-       /**
-        * Preferred result type renderers (the ones recognised to be able to 
handle
-        * the result's MIME type)
-        */
-       private List<Renderer> recognisedRenderersForMimeType;
-       /**
-        * All other result type renderers (the ones not recognised to be able 
to
-        * handle the result's MIME type) In case user wants to use them.
-        */
-       private List<Renderer> otherRenderers;
-       /** Renderers' registry */
-       private final RendererRegistry rendererRegistry;
-       /**
-        * List of all MIME strings from all available renderers to be used for
-        * renderersComboBox. Those that come from 
recognisedRenderersForMimeType
-        * are the preferred ones. Those from otherRenderers will be greyed-out 
in
-        * the combobox list but could still be used.
-        */
-       private String[] mimeList;
-       /**
-        * List of all available renderers but ordered to match the 
corresponding
-        * MIME type strings in mimeList: first the preferred renderers from
-        * recognisedRenderersForMimeType then the ones from otherRenderers.
-        */
-       private ArrayList<Renderer> rendererList;
-       /**
-        * Remember the MIME type of the last used renderer; use "text/plain" by
-        * default until user changes it - then use that one for all result 
items of
-        * the port (in case result contains a list). "text/plain" will always 
be
-        * added to the mimeList.
-        */
-       private String lastUsedMIMEtype = "text/plain";
-       // text renderer will always be available
-       /** If result is "text/plain" - provide possibility to wrap wide text */
-       private JCheckBox wrapTextCheckBox;
-       /** Reference to the object being displayed (contained in the tree 
node) */
-       private Path path;
-       /** Currently selected node from the ResultViewComponent, if any. */
-       private ProcessorResultTreeNode node = null;
-       /**
-        * In case the node can be rendered as "text/plain", map the hash code 
of
-        * the node to the wrap text check box selection value for that node 
(that
-        * remembers if user wanted the text wrapped or not). We are using hash 
code
-        * as using node's user object might be too large.
-        */
-       private Map<Integer, Boolean> nodeToWrapSelection = new HashMap<>();
-       /** List of all output ports - needs to be passed to 'save result' 
actions. */
-       List<? extends OutputWorkflowPort> dataflowOutputPorts = null;
-       /** Panel containing all 'save results' buttons */
-       JPanel saveButtonsPanel = null;
-
-       /**
-        * Creates the component.
-        */
-       public RenderedProcessorResultComponent(RendererRegistry 
rendererRegistry,
-                       List<SaveIndividualResultSPI> saveActions) {
-               this.rendererRegistry = rendererRegistry;
-               setLayout(new BorderLayout());
-               setBorder(new EtchedBorder());
-
-               // Results type combo box
-               renderersComboBox = new JComboBox<>();
-               renderersComboBox.setModel(new DefaultComboBoxModel<String>()); 
// initially empty
-
-               renderersComboBox.setRenderer(new ColorCellRenderer());
-               renderersComboBox.setEditable(false);
-               renderersComboBox.setEnabled(false); // initially disabled
-
-               // Set the new listener - listen for changes in the currently 
selected renderer
-               renderersComboBox.addItemListener(new ItemListener() {
-                       @Override
-                       public void itemStateChanged(ItemEvent e) {
-                               if (e.getStateChange() == SELECTED
-                                               && 
!ERROR_DOCUMENT.equals(e.getItem()))
-                                       // render the result using the newly 
selected renderer
-                                       renderResult();
-                       }
-               });
-
-               JPanel resultsTypePanel = new JPanel(new 
FlowLayout(FlowLayout.LEFT));
-               resultsTypePanel.add(new JLabel("Value type"));
-               resultsTypePanel.add(renderersComboBox);
-
-               // Refresh (re-render) button
-               refreshButton = new JButton("Refresh", refreshIcon);
-               refreshButton.setEnabled(false);
-               refreshButton.addActionListener(new ActionListener() {
-                       @Override
-                       public void actionPerformed(ActionEvent e) {
-                               renderResult();
-                               
refreshButton.getParent().requestFocusInWindow();
-                               /*
-                                * so that the button does not stay focused 
after it is clicked
-                                * on and did its action
-                                */
-                       }
-               });
-               resultsTypePanel.add(refreshButton);
-
-               // Check box for wrapping text if result is of type "text/plain"
-               wrapTextCheckBox = new JCheckBox(WRAP_TEXT);
-               wrapTextCheckBox.setVisible(false);
-               wrapTextCheckBox.addItemListener(new ItemListener() {
-                       @Override
-                       public void itemStateChanged(ItemEvent e) {
-                               // Should have only one child component holding 
the rendered result
-                       // Check for empty just as well
-                               if (renderedResultPanel.getComponents().length 
== 0)
-                                       return;
-                               if (renderedResultPanel.getComponent(0) 
instanceof DialogTextArea) {
-                                       nodeToWrapSelection.put(node.hashCode(),
-                                                       e.getStateChange() == 
SELECTED);
-                                       renderResult();
-                               }
-                       }
-               });
-
-               resultsTypePanel.add(wrapTextCheckBox);
-               // 'Save result' buttons panel
-               saveButtonsPanel = new JPanel(new FlowLayout(FlowLayout.RIGHT));
-               for (SaveIndividualResultSPI action : saveActions) {
-                       action.setResultReference(null);
-                       final JButton saveButton = new 
JButton(action.getAction());
-                       saveButton.setEnabled(false);
-                       saveButton.addActionListener(new ActionListener() {
-                               @Override
-                               public void actionPerformed(ActionEvent e) {
-                                       
saveButton.getParent().requestFocusInWindow();
-                                       /*
-                                        * so that the button does not stay 
focused after it is
-                                        * clicked on and did its action
-                                        */
-                               }
-                       });
-                       saveButtonsPanel.add(saveButton);
-               }
-
-               // Top panel contains result type combobox and various save 
buttons
-               JPanel topPanel = new JPanel();
-               topPanel.setLayout(new BoxLayout(topPanel, LINE_AXIS));
-               topPanel.add(resultsTypePanel);
-               topPanel.add(saveButtonsPanel);
-
-               // Rendered results panel - initially empty
-               renderedResultPanel = new JPanel(new BorderLayout());
-               renderedResultPanel.setBorder(new EmptyBorder(5, 5, 5, 5));
-
-               // Add all components
-               add(topPanel, NORTH);
-               add(new JScrollPane(renderedResultPanel), CENTER);
-       }
-
-       /**
-        * Sets the tree node this components renders the results for, and 
update
-        * the rendered results panel.
-        */
-       public void setNode(final ProcessorResultTreeNode node) {
-               this.node = node;
-               invokeLater(new Runnable() {
-                       @Override
-                       public void run() {
-                               if (node.isState(RESULT_REFERENCE))
-                                       updateResult();
-                               else
-                                       clearResult();
-                       }
-               });
-       }
-
-       /**
-        * Update the component based on the node selected from the
-        * ResultViewComponent tree.
-        */
-       public void updateResult() {
-               if (recognisedRenderersForMimeType == null)
-                       recognisedRenderersForMimeType = new ArrayList<>();
-               if (otherRenderers == null)
-                       otherRenderers = new ArrayList<>();
-
-               ProcessorResultTreeNode result = (ProcessorResultTreeNode) node;
-
-               // Reference to the result data
-               path = result.getReference();
-
-               // Enable the combo box
-               renderersComboBox.setEnabled(true);
-
-               /*
-                * Update the 'save result' buttons appropriately as the result 
node had
-                * changed
-                */
-               for (int i = 0; i < saveButtonsPanel.getComponents().length; 
i++) {
-                       JButton saveButton = (JButton) 
saveButtonsPanel.getComponent(i);
-                       SaveIndividualResultSPI action = 
(SaveIndividualResultSPI) (saveButton
-                                       .getAction());
-                       // Update the action with the new result reference
-                       action.setResultReference(path);
-                       saveButton.setEnabled(true);
-               }
-
-               if (DataBundles.isValue(path) || DataBundles.isReference(path)) 
{
-                       // Enable refresh button
-                       refreshButton.setEnabled(true);
-
-                       List<MimeType> mimeTypes = new ArrayList<>();
-                       try (InputStream inputstream = 
RendererUtils.getInputStream(path)) {
-                               mimeTypes.addAll(getMimeTypes(inputstream));
-                       } catch (IOException e) {
-                               logger.warn("Error getting mimetype", e);
-                       }
-
-                       if (mimeTypes.isEmpty()) {
-                               // If MIME types is empty - add "plain/text" 
MIME type
-                               mimeTypes.add(new MimeType("text/plain"));
-                       } else if (mimeTypes.size() == 1
-                                       && 
mimeTypes.get(0).toString().equals("chemical/x-fasta")) {
-                               /*
-                                * If MIME type is recognised as 
"chemical/x-fasta" only then
-                                * this might be an error from MIME magic 
(i.e., sometimes it
-                                * recognises stuff that is not 
"chemical/x-fasta" as
-                                * "chemical/x-fasta" and then Seq Vista 
renderer is used that
-                                * causes errors) - make sure we also add the 
renderers for
-                                * "text/plain" and "text/xml" as it is most 
probably just
-                                * normal xml text and push the 
"chemical/x-fasta" to the bottom
-                                * of the list.
-                                */
-                               mimeTypes.add(0, new MimeType("text/plain"));
-                               mimeTypes.add(1, new MimeType("text/xml"));
-                       }
-
-                       for (MimeType mimeType : mimeTypes)
-                               for (Renderer renderer : rendererRegistry
-                                               
.getRenderersForMimeType(mimeType.toString()))
-                                       if 
(!recognisedRenderersForMimeType.contains(renderer))
-                                               
recognisedRenderersForMimeType.add(renderer);
-                       // if there are no renderers then force text/plain
-                       if (recognisedRenderersForMimeType.isEmpty())
-                               recognisedRenderersForMimeType = 
rendererRegistry
-                                               
.getRenderersForMimeType("text/plain");
-
-                       /*
-                        * Add all other available renderers that are not 
recognised to be
-                        * able to handle the MIME type of the result
-                        */
-                       otherRenderers = rendererRegistry.getRenderers();
-                       
otherRenderers.removeAll(recognisedRenderersForMimeType);
-
-                       mimeList = new 
String[recognisedRenderersForMimeType.size()
-                                       + otherRenderers.size()];
-                       rendererList = new ArrayList<>();
-
-                       /*
-                        * First add the ones that can handle the MIME type of 
the result
-                        * item
-                        */
-                       for (int i = 0; i < 
recognisedRenderersForMimeType.size(); i++) {
-                               mimeList[i] = 
recognisedRenderersForMimeType.get(i).getType();
-                               
rendererList.add(recognisedRenderersForMimeType.get(i));
-                       }
-                       // Then add the other renderers just in case
-                       for (int i = 0; i < otherRenderers.size(); i++) {
-                               mimeList[recognisedRenderersForMimeType.size() 
+ i] = otherRenderers
-                                               .get(i).getType();
-                               rendererList.add(otherRenderers.get(i));
-                       }
-
-                       renderersComboBox.setModel(new 
DefaultComboBoxModel<>(mimeList));
-
-                       if (mimeList.length > 0) {
-                               int index = 0;
-
-                               // Find the index of the current MIME type for 
this output port.
-                               for (int i = 0; i < mimeList.length; i++)
-                                       if 
(mimeList[i].equals(lastUsedMIMEtype)) {
-                                               index = i;
-                                               break;
-                                       }
-
-                               int previousindex = 
renderersComboBox.getSelectedIndex();
-                               renderersComboBox.setSelectedIndex(index);
-                               /*
-                                * force rendering as setSelectedIndex will not 
fire an
-                                * itemstatechanged event if previousindex == 
index and we still
-                                * need render the result as we may have 
switched from a
-                                * different result item in a result list but 
the renderer index
-                                * stayed the same
-                                */
-                               if (previousindex == index)
-                                       renderResult(); // draw the rendered 
result component
-                       }
-               } else if (DataBundles.isError(path)) {
-                       // Disable refresh button
-                       refreshButton.setEnabled(false);
-
-                       @SuppressWarnings("unused")
-                       ErrorDocument errorDocument;
-                       try {
-                               errorDocument = DataBundles.getError(path);
-                       } catch (IOException e) {
-                               logger.warn("Error getting the error document", 
e);
-                       }
-
-                       // Reset the renderers as we have an error item
-                       recognisedRenderersForMimeType = null;
-                       otherRenderers = null;
-
-                       DefaultMutableTreeNode root = new 
DefaultMutableTreeNode(
-                               "Error Trace");
-
-                       // TODO handle error documents
-                       // ResultsUtils.buildErrorDocumentTree(root, 
errorDocument, referenceService);
-
-                       JTree errorTree = new JTree(root);
-
-                       errorTree.setCellRenderer(new DefaultTreeCellRenderer() 
{
-                               @Override
-                               public Component 
getTreeCellRendererComponent(JTree tree,
-                                               Object value, boolean selected, 
boolean expanded,
-                                               boolean leaf, int row, boolean 
hasFocus) {
-                                       Component renderer = null;
-                                       if (value instanceof 
DefaultMutableTreeNode) {
-                                               Object userObject = 
((DefaultMutableTreeNode) value)
-                                                               
.getUserObject();
-                                               if (userObject instanceof 
ErrorDocument)
-                                                       renderer = 
getErrorDocumentRenderer(tree, selected,
-                                                                       
expanded, leaf, row, hasFocus,
-                                                                       
(ErrorDocument) userObject);
-                                       }
-                                       if (renderer == null)
-                                               renderer = 
super.getTreeCellRendererComponent(tree,
-                                                               value, 
selected, expanded, leaf, row, hasFocus);
-                                       if (renderer instanceof JLabel) {
-                                               JLabel label = (JLabel) 
renderer;
-                                               label.setIcon(null);
-                                       }
-                                       return renderer;
-                               }
-
-                               private Component 
getErrorDocumentRenderer(JTree tree,
-                                               boolean selected, boolean 
expanded, boolean leaf,
-                                               int row, boolean hasFocus, 
ErrorDocument errorDocument) {
-                                       return 
super.getTreeCellRendererComponent(tree, "<html>"
-                                                       + 
escapeHtml(errorDocument.getMessage())
-                                                       + "</html>", selected, 
expanded, leaf, row,
-                                                       hasFocus);
-                               }
-                       });
-
-                       renderersComboBox.setModel(new DefaultComboBoxModel<>(
-                                       new String[] { ERROR_DOCUMENT }));
-                       renderedResultPanel.removeAll();
-                       renderedResultPanel.add(errorTree, CENTER);
-                       repaint();
-               }
-       }
-
-       private MediaType getMimeTypes(InputStream inputstream) throws 
IOException {
-               Detector detector = new 
DefaultDetector(DefaultDetector.class.getClassLoader());
-               Metadata metadata = new Metadata();
-               // TODO: propagate relevant metadata
-               MediaType x = detector.detect(inputstream, metadata);
-               return x;
-       }
-
-       /**
-        * Renders the result panel using the last used renderer.
-        */
-       public void renderResult() {
-               if (ERROR_DOCUMENT.equals(renderersComboBox.getSelectedItem())) 
{
-                       // skip error documents - do not (re)render
-                       return;
-               }
-
-               int selectedIndex = renderersComboBox.getSelectedIndex();
-               if (mimeList != null && selectedIndex >= 0) {
-                       Renderer renderer = rendererList.get(selectedIndex);
-
-                       if (renderer.getType().equals("Text")){ // if the 
result is "text/plain"
-                               /*
-                                * We use node's hash code as the key in the 
nodeToWrapCheckBox
-                                * map as node's user object may be too large
-                                */
-                               if (nodeToWrapSelection.get(node.hashCode()) == 
null) {
-                                       // initially not selected
-                                       
nodeToWrapSelection.put(node.hashCode(), false);
-                               }
-                               
wrapTextCheckBox.setSelected(nodeToWrapSelection.get(node.hashCode()));
-                               wrapTextCheckBox.setVisible(true);
-                       } else {
-                               wrapTextCheckBox.setVisible(false);
-                       }
-
-                       // Remember the last used renderer - use it for all 
result items of this port
-                       //currentRendererIndex = selectedIndex;
-                       lastUsedMIMEtype = mimeList[selectedIndex];
-
-                       JComponent component;
-                       try {
-                               component = renderer.getComponent(path);
-                               if (component instanceof DialogTextArea
-                                               && 
wrapTextCheckBox.isSelected())
-                                       ((JTextArea) 
component).setLineWrap(wrapTextCheckBox
-                                                       .isSelected());
-                               if (component instanceof JTextComponent)
-                                       ((JTextComponent) 
component).setEditable(false);
-                               else if (component instanceof JTree)
-                                       ((JTree) component).setEditable(false);
-                       } catch (RendererException ex) {// maybe this should be 
Exception
-                               /*
-                                * show the user that something unexpected has 
happened but
-                                * continue
-                                */
-                               component = new DialogTextArea(
-                                               "Could not render using 
renderer type "
-                                                               + 
renderer.getClass()
-                                                               + "\nPlease try 
with a different renderer"
-                                                               + " if 
available and consult log"
-                                                               + " for details 
of problem");
-                               ((DialogTextArea) component).setEditable(false);
-                               logger.warn("Couln not render using " + 
renderer.getClass(), ex);
-                       }
-                       renderedResultPanel.removeAll();
-                       renderedResultPanel.add(component, CENTER);
-                       repaint();
-                       revalidate();
-               }
-       }
-
-       /**
-        * Clears the result panel.
-        */
-       public void clearResult() {
-               refreshButton.setEnabled(false);
-               renderedResultPanel.removeAll();
-
-               // Update the 'save result' buttons appropriately
-               for (int i = 0; i < saveButtonsPanel.getComponents().length; 
i++) {
-                       JButton saveButton = (JButton) 
saveButtonsPanel.getComponent(i);
-                       SaveIndividualResultSPI action = 
(SaveIndividualResultSPI) (saveButton
-                                       .getAction());
-                       // Update the action
-                       action.setResultReference(null);
-                       saveButton.setEnabled(false);
-               }
-
-               renderersComboBox.setModel(new DefaultComboBoxModel<String>());
-               renderersComboBox.setEnabled(false);
-
-               revalidate();
-               repaint();
-       }
-
-       class ColorCellRenderer implements ListCellRenderer<Object> {
-               protected DefaultListCellRenderer defaultRenderer = new 
DefaultListCellRenderer();
-
-               @Override
-               public Component getListCellRendererComponent(JList<?> list, 
Object value,
-                               int index, boolean isSelected, boolean 
cellHasFocus) {
-                       JLabel renderer = (JLabel) defaultRenderer
-                                       .getListCellRendererComponent(list, 
value, index,
-                                                       isSelected, 
cellHasFocus);
-
-                       if (value instanceof Color)
-                               renderer.setBackground((Color) value);
-
-                       if (recognisedRenderersForMimeType == null) // error 
occurred
-                               return renderer;
-
-                       if (value != null && index >= 
recognisedRenderersForMimeType.size())
-                               // one of the non-preferred renderers - show it 
in grey
-                               renderer.setForeground(Color.GRAY);
-
-                       return renderer;
-               }
-       }
-}

Reply via email to