You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@taverna.apache.org by st...@apache.org on 2016/09/21 23:30:44 UTC

[09/13] incubator-taverna-workbench git commit: removed taverna-perspective-biocatalogue

http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench/blob/52817a33/taverna-perspective-biocatalogue/src/main/java/org/apache/taverna/biocatalogue/ui/SearchOptionsPanel.java
----------------------------------------------------------------------
diff --git a/taverna-perspective-biocatalogue/src/main/java/org/apache/taverna/biocatalogue/ui/SearchOptionsPanel.java b/taverna-perspective-biocatalogue/src/main/java/org/apache/taverna/biocatalogue/ui/SearchOptionsPanel.java
deleted file mode 100644
index 8d6c7c4..0000000
--- a/taverna-perspective-biocatalogue/src/main/java/org/apache/taverna/biocatalogue/ui/SearchOptionsPanel.java
+++ /dev/null
@@ -1,183 +0,0 @@
-package org.apache.taverna.biocatalogue.ui;
-/*
- * 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 java.awt.Component;
-import java.awt.Dimension;
-import java.awt.GridBagConstraints;
-import java.awt.GridBagLayout;
-import java.awt.event.ActionEvent;
-import java.awt.event.ActionListener;
-import java.awt.event.FocusEvent;
-import java.awt.event.FocusListener;
-import java.awt.event.KeyAdapter;
-import java.awt.event.KeyEvent;
-import java.util.Arrays;
-
-import javax.swing.AbstractAction;
-import javax.swing.JButton;
-import javax.swing.JOptionPane;
-import javax.swing.JPanel;
-import javax.swing.JTextField;
-import javax.swing.event.CaretEvent;
-import javax.swing.event.CaretListener;
-
-import org.apache.taverna.biocatalogue.model.BioCataloguePluginConstants;
-import org.apache.taverna.biocatalogue.model.ResourceManager;
-import org.apache.taverna.biocatalogue.model.Resource.TYPE;
-import org.apache.taverna.biocatalogue.model.search.SearchOptions;
-import org.apache.taverna.biocatalogue.ui.search_results.SearchResultsMainPanel;
-import org.apache.taverna.lang.ui.DeselectingButton;
-
-
-/**
- * 
- * @author Sergejs Aleksejevs
- */
-@SuppressWarnings("serial")
-public class SearchOptionsPanel extends JPanel implements HasDefaultFocusCapability
-{
-  // COMPONENTS
-  private SearchOptionsPanel thisPanel;
-  
-private JTextField tfSearchQuery;
-  private JButton bSearch;
-  
-  private final SearchResultsMainPanel tabbedSearchResultsPanel;
-  
-  
-  public SearchOptionsPanel(SearchResultsMainPanel tabbedSearchResultsPanel)
-  {
-    super();
-    this.thisPanel = this;
-    this.tabbedSearchResultsPanel = tabbedSearchResultsPanel;
-    
-    this.initialiseUI();
-  }
-  
-  
-  private void initialiseUI()
-  {
-    this.setLayout(new GridBagLayout());
-    GridBagConstraints c = new GridBagConstraints();
-    
-    c.gridx = 0;
-    c.gridy = 0;
-    c.weightx = 0.0;
-    c.fill = GridBagConstraints.NONE;
-    
-    
-    this.tfSearchQuery = new JTextField(30);
-    this.tfSearchQuery.setToolTipText(
-        "<html>&nbsp;Tips for creating search queries:<br>" +
-        "&nbsp;1) Use wildcards to make more flexible queries. Asterisk (<b>*</b>) matches any zero or more<br>" +
-        "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;characters (e.g. <b><i>Seq*</i></b> would match <b><i>Sequence</i></b>), question mark (<b>?</b>) matches any single<br>" +
-        "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;character (e.g. <b><i>Bla?t</i></b> would match <b><i>Blast</i></b>).<br>" +
-        "&nbsp;2) Enclose the <b><i>\"search query\"</i></b> in double quotes to make exact phrase matching, otherwise<br>" +
-        "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;items that contain any (or all) words in the <b><i>search query</i></b> will be found.</html>");
-    
-    this.tfSearchQuery.addFocusListener(new FocusListener() {
-      public void focusGained(FocusEvent e) {
-        tfSearchQuery.selectAll();
-      }
-      public void focusLost(FocusEvent e) { /* do nothing */ }
-    });
-    this.tfSearchQuery.addKeyListener(new KeyAdapter() {
-      public void keyPressed(KeyEvent e) {
-        // ENTER pressed - start search by simulating "search" button click
-        // (only do this if the "search" button was active at that moment)
-        if (e.getKeyCode() == KeyEvent.VK_ENTER && bSearch.isEnabled()) {    
-          bSearch.doClick();
-        }
-      }
-    });
-    JButton jbClearSearch = new DeselectingButton(new AbstractAction("Clear") {
-
-		@Override
-		public void actionPerformed(ActionEvent e) {
-			tfSearchQuery.setText("");
-			clearSearch();
-		}}, "");
-    jbClearSearch.setIcon(ResourceManager.getImageIcon(ResourceManager.CLEAR_ICON));
-    
-    this.add(jbClearSearch, c);
-    
-    c.gridx++;
-    c.fill = GridBagConstraints.HORIZONTAL;
-    c.weightx = 0.1;
-    this.add(tfSearchQuery, c);
-    
-    
-    // --- Search button ---
-    
-    c.gridx++;
-    c.weightx = 0;
-    c.fill = GridBagConstraints.NONE;
-    c.anchor = GridBagConstraints.EAST;
-    this.bSearch = new DeselectingButton("Search",
-    		new ActionListener() {
-        public void actionPerformed(ActionEvent e) {
-          if (getSearchQuery().length() == 0) {
-            clearSearch();
-          }
-          else {
-            // search query available - collect data about the current search and execute it
-            tabbedSearchResultsPanel.startNewSearch(thisPanel.getState());
-          }
-        }
-      },
-      tfSearchQuery.getToolTipText());
-    this.bSearch.setIcon(ResourceManager.getImageIcon(ResourceManager.SEARCH_ICON));
-    this.add(bSearch, c);
-    
-}
-   
-  private void clearSearch() {
-	  tabbedSearchResultsPanel.clearSearch();
-      thisPanel.focusDefaultComponent();
-  }
-  
-  /**
-   * Saves the current state of the search options into a single {@link SearchOptions} object.
-   */
-  public SearchOptions getState() {
-    return (new SearchOptions(getSearchQuery(), Arrays.asList(TYPE.values())));
-  }
-  
-  
-  // *** GETTERS AND SETTERS ***
-  
-  public String getSearchQuery() {
-    return (this.tfSearchQuery.getText().trim());
-  }
-  public void setSearchQuery(String strSearchQuery) {
-    this.tfSearchQuery.setText(strSearchQuery);
-  }
-   
-  
-  // *** Callbacks for HasDefaultFocusCapability interface ***
-  
-  public void focusDefaultComponent() {
-    this.tfSearchQuery.selectAll();
-    this.tfSearchQuery.requestFocusInWindow();
-  }
-  
-  public Component getDefaultComponent() {
-    return(this.tfSearchQuery);
-  }
-  
-}

http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench/blob/52817a33/taverna-perspective-biocatalogue/src/main/java/org/apache/taverna/biocatalogue/ui/filtertree/FilterTreeNode.java
----------------------------------------------------------------------
diff --git a/taverna-perspective-biocatalogue/src/main/java/org/apache/taverna/biocatalogue/ui/filtertree/FilterTreeNode.java b/taverna-perspective-biocatalogue/src/main/java/org/apache/taverna/biocatalogue/ui/filtertree/FilterTreeNode.java
deleted file mode 100644
index 956c54d..0000000
--- a/taverna-perspective-biocatalogue/src/main/java/org/apache/taverna/biocatalogue/ui/filtertree/FilterTreeNode.java
+++ /dev/null
@@ -1,107 +0,0 @@
-package org.apache.taverna.biocatalogue.ui.filtertree;
-/*
- * 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 org.apache.taverna.biocatalogue.ui.tristatetree.TriStateTreeNode;
-
-/**
- * This class allows storing two pieces of data relevant to content filtering
- * within the node of a tree. These values are kept hidden from the user and
- * are only used when the filtering is about to happen.
- * 
- * @author Sergejs Aleksejevs
- */
-@SuppressWarnings("serial")
-public class FilterTreeNode extends TriStateTreeNode
-{
-  private String type; 
-  private String urlValue;
-  final private boolean isFilterCategory;
-  
-  
-  /**
-   * This constructor is useful for root nodes, which need not have filter type / value.
-   */
-  public FilterTreeNode(Object userObject) {
-    super(userObject);
-    
-    this.isFilterCategory = true;
-  }
-  
-  
-  /**
-   * @param userObject As in the superclass (DefaultMutableTreeNode) - the object which represents the node in the UI
-   * @param filterType Type of the filter - e.g. 'Service Categories' --> "cat"; 'Service Types' --> "t"
-   * @param filterUrlValue Value that should be added to the URL to perform the filtering operation
-   */
-  public FilterTreeNode(Object userObject, String filterType, String filterUrlValue) {
-    super(userObject);
-    
-    this.setType(filterType);
-    this.setUrlValue(filterUrlValue);
-    this.isFilterCategory = false;
-  }
-  
-  
-  public void setType(String type) {
-    this.type = type;
-  }
-  
-  public String getType() {
-    return type;
-  }
-  
-  public void setUrlValue(String urlValue) {
-    this.urlValue = urlValue;
-  }
-  
-  
-  public String getUrlValue() {
-    return urlValue;
-  }
-  
-  /**
-   * @return True if and only if this node is one of the "root" filter categories (not to be mixed with root of the filter tree).
-   */
-  public boolean isFilterCategory() {
-    return isFilterCategory;
-  }
-  
-  
-  /**
-   * @return <code>true</code> if the current {@link FilterTreeNode} represents a tag with a namespace
-   *         (i.e. an ontological term), whose full tag name looks like:
-   *         <code>< http://example.namespace.com#tag_display_name ></code>
-   */
-  public boolean isTagWithNamespaceNode() {
-    return (this.getType() != null && this.getType().contains("tag") && this.getUrlValue().contains("#") &&
-            this.getUrlValue().startsWith("<") && this.getUrlValue().endsWith(">"));
-  }
-  
-  
-  /**
-   * Static wrapper for {@link FilterTreeNode#isTagWithNamespaceNode()}
-   *  
-   * @param filterType
-   * @param filterUrlValue
-   * @return
-   */
-  public static boolean isTagWithNamespaceNode(String filterType, String filterUrlValue) {
-    return (new FilterTreeNode("test_user_object", filterType, filterUrlValue).isTagWithNamespaceNode());
-  }
-  
-}

http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench/blob/52817a33/taverna-perspective-biocatalogue/src/main/java/org/apache/taverna/biocatalogue/ui/filtertree/FilterTreePane.java
----------------------------------------------------------------------
diff --git a/taverna-perspective-biocatalogue/src/main/java/org/apache/taverna/biocatalogue/ui/filtertree/FilterTreePane.java b/taverna-perspective-biocatalogue/src/main/java/org/apache/taverna/biocatalogue/ui/filtertree/FilterTreePane.java
deleted file mode 100644
index a35a8da..0000000
--- a/taverna-perspective-biocatalogue/src/main/java/org/apache/taverna/biocatalogue/ui/filtertree/FilterTreePane.java
+++ /dev/null
@@ -1,364 +0,0 @@
-package org.apache.taverna.biocatalogue.ui.filtertree;
-/*
- * 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 java.awt.BorderLayout;
-import java.awt.Color;
-import java.awt.Dimension;
-import java.awt.GridLayout;
-import java.awt.event.ActionEvent;
-import java.util.Collections;
-import java.util.Comparator;
-import java.util.List;
-
-import javax.swing.AbstractAction;
-import javax.swing.Action;
-import javax.swing.BorderFactory;
-import javax.swing.JLabel;
-import javax.swing.JOptionPane;
-import javax.swing.JPanel;
-import javax.swing.JPopupMenu;
-import javax.swing.JScrollPane;
-import javax.swing.JToolBar;
-import javax.swing.SwingUtilities;
-
-import org.apache.taverna.biocatalogue.model.BioCataloguePluginConstants;
-import org.apache.taverna.biocatalogue.model.Resource.TYPE;
-import org.apache.taverna.biocatalogue.model.ResourceManager;
-import org.apache.taverna.biocatalogue.model.connectivity.BioCatalogueClient;
-import org.apache.taverna.biocatalogue.model.search.SearchInstance;
-import org.apache.taverna.biocatalogue.model.search.ServiceFilteringSettings;
-import org.apache.taverna.biocatalogue.ui.tristatetree.JTriStateTree;
-import org.apache.taverna.biocatalogue.ui.tristatetree.TriStateTreeCheckingListener;
-import org.apache.taverna.ui.perspectives.biocatalogue.MainComponentFactory;
-import org.apache.taverna.workbench.icons.WorkbenchIcons;
-
-import org.apache.commons.lang.StringEscapeUtils;
-import org.apache.log4j.Logger;
-
-import org.biocatalogue.x2009.xml.rest.Filter;
-import org.biocatalogue.x2009.xml.rest.FilterGroup;
-import org.biocatalogue.x2009.xml.rest.FilterType;
-import org.biocatalogue.x2009.xml.rest.Filters;
-
-/**
- * 
- * @author Sergejs Aleksejevs
- */
-@SuppressWarnings("serial")
-public class FilterTreePane extends JPanel implements TriStateTreeCheckingListener
-{
-  private TYPE resourceType;
-  private String filtersURL;
-  private BioCatalogueClient client;
-  private Logger logger;
-  
-  private FilterTreePane thisPanel;
-  
-  private JToolBar tbFilterTreeToolbar;
-  
-  private JPanel jpFilters = null;
-  private JFilterTree filterTree;  // tree component to display filter selections
-  private Filters filtersRoot;     // last filters element which was received from the API
-
-  
-  
-  public FilterTreePane(TYPE resourceType)
-  {
-    this.thisPanel = this;
-    
-    this.resourceType = resourceType;
-    this.filtersURL = resourceType.getAPIResourceCollectionFiltersURL();
-    this.client = BioCatalogueClient.getInstance();
-    this.logger = Logger.getLogger(this.getClass());
-    
-    initialiseUI();
-    loadFiltersAndBuildTheTree();
-  }
-  
-  
-  private void initialiseUI()
-  {
-    jpFilters = new JPanel();
-    jpFilters.setBackground(Color.WHITE);
-    
-    JScrollPane spFilters = new JScrollPane(jpFilters);
-    spFilters.setMinimumSize(new Dimension(235,0));
-    spFilters.setPreferredSize(new Dimension(300,0));
-    spFilters.getVerticalScrollBar().setUnitIncrement(BioCataloguePluginConstants.DEFAULT_SCROLL);
-    
-    
-    tbFilterTreeToolbar = createTreeActionToolbar();
-    resetTreeActionToolbar();
-    
-    this.setLayout(new BorderLayout());
-    this.add(tbFilterTreeToolbar, BorderLayout.NORTH);
-    this.add(spFilters, BorderLayout.CENTER);
-  }
-  
-  
-  /**
-   * @return A toolbar that replicates all actions available in the contextual menu of
-   *         the filtering tree - mainly: saving current filter, reloading filter tree,
-   *         expanding/collapsing and selecting/deselecting everything in the tree.
-   */
-private JToolBar createTreeActionToolbar()
-  {
-     
-    
-    // the actual toolbar - no actions are added to it yet: done in a separate method
-    JToolBar tbTreeActions = new JToolBar(JToolBar.HORIZONTAL);
-    tbTreeActions.setAlignmentX(RIGHT_ALIGNMENT);
-    tbTreeActions.setBorderPainted(true);
-    tbTreeActions.setBorder(BorderFactory.createEmptyBorder(5, 5, 5, 5));
-    tbTreeActions.setFloatable(false);
-    return (tbTreeActions);
-  }
-  
-  
-  /**
-   * Resets the action toolbar to the original state.
-   */
-  public void resetTreeActionToolbar()
-  {
-    
-    tbFilterTreeToolbar.removeAll();
-    tbFilterTreeToolbar.repaint();
-  }
-  
-  
-  /**
-   * This method loads filter data from API and populates the view.
-   */
-  private void loadFiltersAndBuildTheTree()
-  {
-    SwingUtilities.invokeLater(new Runnable() {
-      public void run()
-      {
-        resetTreeActionToolbar();
-        
-        jpFilters.removeAll();
-        jpFilters.setLayout(new BorderLayout());
-        jpFilters.add(new JLabel(" Loading filters..."), BorderLayout.NORTH);
-        jpFilters.add(new JLabel(ResourceManager.getImageIcon(ResourceManager.BAR_LOADER_ORANGE)), BorderLayout.CENTER);
-        thisPanel.validate();
-        thisPanel.repaint();      // validate and repaint this component to make sure that
-                                  // scroll bar around the filter tree placeholder panel disappears
-      }
-    });
-    
-    new Thread("Load filters") {
-      public void run() {
-        try {
-          // load filter data
-          filtersRoot = client.getBioCatalogueFilters(filtersURL);
-          
-          // Create root of the filter tree component
-          FilterTreeNode root = new FilterTreeNode("root");
-          
-          // populate the tree via its root element
-          for (FilterGroup fgroup : filtersRoot.getGroupList())
-          {
-            // attach filter group directly to the root node
-            FilterTreeNode fgroupNode = new FilterTreeNode("<html><span style=\"color: black; font-weight: bold;\">" + StringEscapeUtils.escapeHtml(fgroup.getName().toString()) + "</span></html>");
-            root.add(fgroupNode);
-            
-            
-            // go through all filter types in this group and add them to the tree
-            for (FilterType ftype : fgroup.getTypeList())
-            {
-              // if there's more than one filter type in the group, add the type node as another level of nesting
-              // (otherwise, attach filters inside the single type directly to the group node)
-              FilterTreeNode filterTypeNode = fgroupNode;
-              if (fgroup.getTypeList().size() > 1) {
-                filterTypeNode = new FilterTreeNode("<html><span style=\"color: black; font-weight: bold;\">" + StringEscapeUtils.escapeHtml(ftype.getName().toString()) + "</span></html>");
-                fgroupNode.add(filterTypeNode);
-              }
-              
-              // For some reason sorting the list of filters before inserting into tree
-              // messes up the tree nodes
-//              Collections.sort(ftype.getFilterList(), new Comparator<Filter>(){
-//				@Override
-//				public int compare(Filter f1, Filter f2) {
-//				    return (f1.getName().compareToIgnoreCase(f2.getName()));
-//				}           	  
-//              });
-              addFilterChildren(filterTypeNode, ftype.getUrlKey().toString(), ftype.getFilterList());
-            }
-          }
-          
-          // Create the tree view with the populated root
-          filterTree = new JFilterTree(root);
-          filterTree.setRootVisible(false);      // don't want the root to be visible; not a standard thing, so not implemented within JTriStateTree
-          filterTree.setLargeModel(true);        // potentially can have many filters!
-          filterTree.addCheckingListener(thisPanel);
-          
-                   
-          // insert the created tree view into the filters panel
-          jpFilters.removeAll();
-          jpFilters.setLayout(new GridLayout(0,1));
-          jpFilters.add(filterTree);
-          jpFilters.validate();
-          
-          
-          // add actions from the contextual menu of the filter tree into the toolbar
-          // that replicates those plus adds additional ones in this panel
-          tbFilterTreeToolbar.removeAll();
-          for (Action a : filterTree.getContextualMenuActions()) {
-            tbFilterTreeToolbar.add(a);
-          }
-          
-          
-          // enable all actions
-          filterTree.enableAllContextualMenuAction(true);
-        }
-        catch (Exception e) {
-          logger.error("Failed to load filter tree from the following URL: " + filtersURL, e);
-        }
-      }
-      
-      
-      /**
-       * Recursive method to populate a node of the filter tree with all
-       * sub-filters.
-       * 
-       * Ontological terms will be underlined.
-       * 
-       * @param root Tree node to add children to.
-       * @param filterList A list of Filters to add to "root" as children.
-       */
-      private void addFilterChildren(FilterTreeNode root, String filterCategory, List<Filter> filterList) {
-        for (Filter f : filterList) {
-        	
-					// Is this an ontological term?
-					String ontology = null;
-					if (FilterTreeNode.isTagWithNamespaceNode(filterCategory, f
-							.getUrlValue())) {
-						String nameAndNamespace = f.getUrlValue().substring(1,
-								f.getUrlValue().length() - 1);
-						String[] namePlusNamespace = nameAndNamespace
-								.split("#");
-						ontology = JFilterTree
-								.getOntologyFromNamespace(namePlusNamespace[0]);
-					}
-
-					FilterTreeNode fNode = new FilterTreeNode("<html><span color=\"black\"" /*(FilterTreeNode.isTagWithNamespaceNode(filterCategory, f.getUrlValue()) ? " style=\"text-decoration: underline;\"" : "") */ + ">" +
-                               StringEscapeUtils.escapeHtml(f.getName()) + " (" + f.getCount() + ")" + "</span>" +
-                               /*(FilterTreeNode.isTagWithNamespaceNode(filterCategory, f.getUrlValue()) ? "<span color=\"gray\">&nbsp;("+f.getCount().intValue()+")</span></html>" : "</html>"),*/
-                               (ontology != null ? "<span color=\"#3090C7\"> &lt;"+ ontology +"&gt;</span></html>" : "</html>"),
-                               filterCategory, f.getUrlValue());
-					addFilterChildren(fNode, filterCategory, f.getFilterList());
-         
-					// Insert the node into the (alphabetically) sorted children nodes
-					List<FilterTreeNode> children = Collections.list(root.children());
-					// Search for the index the new node should be inserted at
-					int index = Collections.binarySearch(children, fNode,
-							new Comparator<FilterTreeNode>() {
-								@Override
-								public int compare(FilterTreeNode o1,
-										FilterTreeNode o2) {
-									String str1 = ((String) o1.getUserObject())
-											.toString();
-									String str2 = ((String) o2.getUserObject())
-											.toString();
-									return (str1.compareToIgnoreCase(str2));
-								}
-							});
-
-					if (index < 0){ // not found - index will be equal to -insertion-point -1
-						index = -index - 1;
-					}// else node with the same name found in the array - insert it at that position
-			        root.insert(fNode, index);
-
-			        //root.add(fNode);
-        		}
-      		} 
-    	}.start();
-  	}
-  
-  
-  /**
-   * @param si Uses this SearchInstance to restore the checking
-   *           state of filtering criteria in the filter tree. 
-   */
-  public void restoreFilteringSettings(SearchInstance si) {
-    this.filterTree.restoreFilterCheckingSettings(si.getFilteringSettings().getFilterTreeRootsOfCheckedPaths());
-  }
-  
-  
-  /**
-   * Clears any selections made in the filter tree -
-   * i.e. both clears checked nodes and removes all tree path selections.
-   */
-  public void clearSelection() {
-    // filter tree may not have been initialised yet, so perform a check
-    if (this.filterTree != null)
-    {
-      // remove, then restore self as a listener - this is to avoid
-      // receiving checking state change event
-      this.filterTree.removeCheckingListener(thisPanel);
-      this.filterTree.selectAllNodes(false);
-      this.filterTree.clearSelection();
-      this.filterTree.addCheckingListener(thisPanel);
-    }
-  }
-  
-  
-  /**
-   * Collapses all expanded nodes in the filter tree.
-   */
-  public void collapseAll() {
-    // filter tree may not have been initialised yet, so perform a check
-    if (this.filterTree != null) {
-      this.filterTree.collapseAll();
-    }
-  }
-  
-  public void applyQueryString(final String queryString) {
-	    this.filtersURL = resourceType.getAPIResourceCollectionFiltersURL() + "?q=" + queryString;
-	    loadFiltersAndBuildTheTree();
-  }
-  
-  /**
-   * Used for making preferred height of the search status label
-   * the same as the height of this toolbar.
-   * 
-   * @return
-   */
-  public Dimension getTreeToolbarPreferredSize() {
-    return this.tbFilterTreeToolbar.getPreferredSize();
-  }
-  
-  
-  // *** Callback for TriStateTreeCheckingListener ***
-  
-  /**
-   * We start a new search as soon as checking state of the filter tree changes.
-   */
-  public void triStateTreeCheckingChanged(JTriStateTree source)
-  {
-    MainComponentFactory.getSharedInstance().getBioCatalogueExplorationTab().getTabbedSearchResultsPanel().
-        startNewFiltering(resourceType, new ServiceFilteringSettings(filterTree));
-  }
-
-
-public void reset() {
-    this.filtersURL = resourceType.getAPIResourceCollectionFiltersURL();
-	loadFiltersAndBuildTheTree();
-}
-  
-}

http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench/blob/52817a33/taverna-perspective-biocatalogue/src/main/java/org/apache/taverna/biocatalogue/ui/filtertree/JFilterTree.java
----------------------------------------------------------------------
diff --git a/taverna-perspective-biocatalogue/src/main/java/org/apache/taverna/biocatalogue/ui/filtertree/JFilterTree.java b/taverna-perspective-biocatalogue/src/main/java/org/apache/taverna/biocatalogue/ui/filtertree/JFilterTree.java
deleted file mode 100644
index 104df89..0000000
--- a/taverna-perspective-biocatalogue/src/main/java/org/apache/taverna/biocatalogue/ui/filtertree/JFilterTree.java
+++ /dev/null
@@ -1,85 +0,0 @@
-package org.apache.taverna.biocatalogue.ui.filtertree;
-/*
- * 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 java.awt.event.MouseEvent;
-import java.util.HashMap;
-import java.util.Map;
-
-import org.apache.taverna.biocatalogue.ui.tristatetree.JTriStateTree;
-import org.apache.taverna.biocatalogue.ui.tristatetree.TriStateTreeNode;
-
-/**
- * This subclass of {@link JTriStateTree} provides custom behaviour
- * for tooltips: ontological terms will now always get a tooltip that
- * displays the namespace for the tag, but plain text tags will still
- * behave as before - the way it is defined in the superclass (so that
- * the tooltip will only be shown if the tag does not fully fit into
- * the visible part of the {@link FilterTreePane}.
- * 
- * @author Sergejs Aleksejevs
- */
-@SuppressWarnings("serial")
-public class JFilterTree extends JTriStateTree
-{
-  
-  private static Map<String, String> nameSpaceToOntologyMap = new HashMap<String, String>(){
-      {
-          put("http://www.mygrid.org.uk/ontology", "mygrid-domain-ontology");
-          put("http://www.mygrid.org.uk/mygrid-moby-service", "mygrid-service-ontology");
-      }
-  };
- 
-
-  public JFilterTree(TriStateTreeNode root) {
-    super(root);
-  }
-  
-  
-  public String getToolTipText(MouseEvent e)
-  {
-    Object correspondingObject = super.getTreeNodeObject(e);
-    if (correspondingObject != null && correspondingObject instanceof FilterTreeNode) {
-      FilterTreeNode filterNode = (FilterTreeNode) correspondingObject;
-      
-      if (filterNode.isTagWithNamespaceNode())
-      {
-        String nameAndNamespace = filterNode.getUrlValue().substring(1, filterNode.getUrlValue().length() - 1);
-        String[] namePlusNamespace = nameAndNamespace.split("#");
-        
-        return ("<html>" + namePlusNamespace[1] + " (<b>Namespace: </b>" + namePlusNamespace[0] + ")</html>");
-      }
-    }
-    
-    return super.getToolTipText(e);
-  }
-  
-  public static String getOntologyFromNamespace(String namespace){
-	  if (namespace == null){
-		  return null;
-	  }
-	  else{
-		  if (nameSpaceToOntologyMap.containsKey(namespace)){
-			  return nameSpaceToOntologyMap.get(namespace);
-		  }
-		  else{
-			  return null;
-		  }
-	  }
-  }
-  
-}

http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench/blob/52817a33/taverna-perspective-biocatalogue/src/main/java/org/apache/taverna/biocatalogue/ui/search_results/ExpandableOnDemandLoadedListCellRenderer.java
----------------------------------------------------------------------
diff --git a/taverna-perspective-biocatalogue/src/main/java/org/apache/taverna/biocatalogue/ui/search_results/ExpandableOnDemandLoadedListCellRenderer.java b/taverna-perspective-biocatalogue/src/main/java/org/apache/taverna/biocatalogue/ui/search_results/ExpandableOnDemandLoadedListCellRenderer.java
deleted file mode 100644
index 2a3619e..0000000
--- a/taverna-perspective-biocatalogue/src/main/java/org/apache/taverna/biocatalogue/ui/search_results/ExpandableOnDemandLoadedListCellRenderer.java
+++ /dev/null
@@ -1,236 +0,0 @@
-package org.apache.taverna.biocatalogue.ui.search_results;
-/*
- * 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 java.awt.Color;
-import java.awt.Component;
-import java.awt.GridBagConstraints;
-import java.awt.GridBagLayout;
-import java.awt.Insets;
-import java.awt.Rectangle;
-import java.util.ArrayList;
-import java.util.List;
-
-import javax.swing.BorderFactory;
-import javax.swing.JLabel;
-import javax.swing.JList;
-import javax.swing.JPanel;
-import javax.swing.ListCellRenderer;
-import javax.swing.SwingUtilities;
-
-import org.apache.taverna.biocatalogue.model.LoadingResource;
-import org.apache.taverna.biocatalogue.model.Resource;
-import org.apache.taverna.biocatalogue.model.ResourceManager;
-import org.apache.taverna.biocatalogue.model.Resource.TYPE;
-
-import org.biocatalogue.x2009.xml.rest.ResourceLink;
-
-
-/**
- * 
- * @author Sergejs Aleksejevs
- */
-@SuppressWarnings("serial")
-public abstract class ExpandableOnDemandLoadedListCellRenderer extends JPanel implements ListCellRenderer
-{
-  protected static final int DESCRIPTION_MAX_LENGTH_COLLAPSED = 90;
-  protected static final int DESCRIPTION_MAX_LENGTH_EXPANDED = 500;
-  
-  protected static final int LINE_LENGTH = 90;
-  
-  
-  protected static final int TOOLTIP_DESCRIPTION_LENGTH = 150;
-  protected static final int TOOLTIP_LINE_LENGTH = 60;
-  
-  // list cells are not repainted by Swing by default - hence to use animated GIFs inside cells,
-  // need to have a special class that takes care of changing the frames as necessary
-  protected JLabel loaderBarAnimationOrange = new JLabel(ResourceManager.getImageIcon(ResourceManager.BAR_LOADER_ORANGE), JLabel.CENTER);
-  protected JLabel loaderBarAnimationGrey = new JLabel(ResourceManager.getImageIcon(ResourceManager.BAR_LOADER_GREY), JLabel.CENTER);
-  protected JLabel loaderBarAnimationGreyStill = new JLabel (ResourceManager.getImageIcon(ResourceManager.BAR_LOADER_GREY_STILL), JLabel.CENTER);
-  
-  
-  protected JPanel thisPanel;
-  private List<Class<? extends ResourceLink>> resourceClasses;
-  
-  
-  protected JLabel jlExpand;
-  protected static Rectangle expandRect;
-    
-  public ExpandableOnDemandLoadedListCellRenderer()
-  {
-    this.thisPanel = this;
-    
-    resourceClasses = new ArrayList<Class<? extends ResourceLink>>();
-    try {
-      for (Resource.TYPE resourceType : Resource.TYPE.values()) {
-        resourceClasses.add(resourceType.getXmlBeansGeneratedClass());
-      }
-    }
-    catch (Exception e) {
-      e.printStackTrace();
-    }
-      
-  }
-  
-  
-  public static Rectangle getExpandRect() {
-    return (expandRect == null ? new Rectangle() : expandRect);
-  }
-  
-  
-  public Component getListCellRendererComponent(JList list, Object itemToRender, int itemIndex, boolean isSelected, boolean cellHasFocus)
-  {
-    // the same instance of the cell renderer is used for all cells, so
-    // need to remove everything from the current panel to ensure clean
-    // painting of the current cell
-    this.removeAll();
-    
-    // GET THE DATA
-    
-    // LoadingResource is a placeholder for the detailed data on the resource --
-    // it is being quickly fetched from the API and contanins just the name and the URL
-    // of the actual resource;
-    // 
-    // these entries will be placed into the list when the initial part of the search
-    // is complete, further details will be loaded asynchronously and inserted into
-    // the same area
-    if (itemToRender instanceof LoadingResource) {
-      prepareInitiallyLoadingEntry(itemToRender);
-    }
-    
-    // real data about some resource: details, but in the collapsed form
-    else if (isInstanceOfResourceType(itemToRender)) {
-      prepareLoadedEntry(itemToRender, isSelected);
-    }
-       
-    // error case - unknown resource...
-    else {
-      prepareUnknownResourceTypeEntry();
-    }
-    
-    
-    // MAKE SURE CELL SELECTION WORKS AS DESIRED
-    if (shouldBeHidden(itemToRender)) {
-        this.setBorder(BorderFactory.createCompoundBorder(BorderFactory.createMatteBorder(3, 4, 3, 4, list.getBackground()),
-                BorderFactory.createLineBorder(Color.DARK_GRAY)));
-        setBackground(list.getBackground());
-        setForeground(list.getBackground());
-    }
-    else if (isSelected) {
-      this.setBorder(BorderFactory.createCompoundBorder(BorderFactory.createMatteBorder(3, 4, 3, 4, list.getBackground()),
-                                                        BorderFactory.createLineBorder(Color.DARK_GRAY)));
-        setBackground(Color.decode("#BAE8FF"));         // very light blue colour
-        setForeground(list.getSelectionForeground());
-    } else {
-        this.setBorder(BorderFactory.createCompoundBorder(BorderFactory.createMatteBorder(3, 4, 3, 4, list.getBackground()),
-                                                          BorderFactory.createLineBorder(Color.DARK_GRAY)));
-        setBackground(Color.WHITE);
-        setForeground(list.getForeground());
-    }
-    
-    this.revalidate();
-    
-    if (expandRect == null && jlExpand != null) {
-      SwingUtilities.invokeLater(new Runnable() {
-        public void run() {
-          expandRect = jlExpand.getBounds();
-          expandRect.x -= Math.abs(thisPanel.getBounds().x);
-        }
-      });
-    }
-    
-    return (this);
-  }
-  
-  
-  /**
-   * This entry can be in one of two states:
-   * -- containing only the name of the resource and NOT loading further details;
-   * -- containing only the name of the resource and LOADING further details.
-   * 
-   * @param itemToRender
-   * @return
-   */
-  protected abstract GridBagConstraints prepareInitiallyLoadingEntry(Object itemToRender);
-  
-  
-  /**
-   * 
-   * @param itemToRender
- * @param isSelected 
-   * @param expandedView <code>true</code> to indicate that this method generates the top
-   *                     fragment of the expanded list entry for this SOAP operation / REST method.
-   * @return
-   */
-  protected abstract GridBagConstraints prepareLoadedEntry(Object itemToRender, boolean isSelected);
-  
-  
-  private void prepareUnknownResourceTypeEntry()
-  {
-    this.setLayout(new GridBagLayout());
-    GridBagConstraints c = new GridBagConstraints();
-    c.anchor = GridBagConstraints.NORTHWEST;
-    c.fill = GridBagConstraints.HORIZONTAL;
-    
-    c.gridx = 0;
-    c.gridy = 0;
-    c.weightx = 0;
-    c.insets = new Insets(8, 6, 6, 3);
-    this.add(new JLabel(ResourceManager.getImageIcon(ResourceManager.UNKNOWN_RESOURCE_TYPE_ICON)), c);
-    
-    c.gridx++;
-    c.weightx = 1.0;
-    c.insets = new Insets(8, 3, 6, 3);
-    this.add(new JLabel("<html><font color=\"#FF0000\">ERROR: This item shoulnd't have been here...</font></html>"), c);
-    
-    c.gridx = 1;
-    c.gridy++;
-    c.gridheight = 1;
-    c.weightx = 1.0;
-    c.weighty = 0;
-    c.insets = new Insets(3, 3, 3, 3);
-    this.add(new JLabel(" "), c);
-    
-    c.gridy++;
-    c.insets = new Insets(3, 3, 8, 3);
-    this.add(new JLabel(" "), c);
-  }
-  
-  
-  private boolean isInstanceOfResourceType(Object itemToRender)
-  {
-    for (Class<? extends ResourceLink> resourceClass : resourceClasses) {
-      if (resourceClass.isInstance(itemToRender)) {
-        return (true);
-      }
-    }
-    
-    return (false);
-  }
-  
-  protected TYPE determineResourceType(Object itemToRender) {
-    if (itemToRender instanceof ResourceLink) {
-      return (Resource.getResourceTypeFromResourceURL(((ResourceLink)itemToRender).getHref()));
-    }
-    else {
-      return (null);
-    }
-  }
-  
-  abstract boolean shouldBeHidden(Object itemToRender);
-  
-}

http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench/blob/52817a33/taverna-perspective-biocatalogue/src/main/java/org/apache/taverna/biocatalogue/ui/search_results/RESTMethodListCellRenderer.java
----------------------------------------------------------------------
diff --git a/taverna-perspective-biocatalogue/src/main/java/org/apache/taverna/biocatalogue/ui/search_results/RESTMethodListCellRenderer.java b/taverna-perspective-biocatalogue/src/main/java/org/apache/taverna/biocatalogue/ui/search_results/RESTMethodListCellRenderer.java
deleted file mode 100644
index 7a3e894..0000000
--- a/taverna-perspective-biocatalogue/src/main/java/org/apache/taverna/biocatalogue/ui/search_results/RESTMethodListCellRenderer.java
+++ /dev/null
@@ -1,264 +0,0 @@
-package org.apache.taverna.biocatalogue.ui.search_results;
-/*
- * 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 java.awt.Font;
-import java.awt.GridBagConstraints;
-import java.awt.GridBagLayout;
-import java.awt.Insets;
-import java.util.ArrayList;
-import java.util.List;
-
-import javax.swing.JLabel;
-
-import org.apache.taverna.biocatalogue.model.LoadingResource;
-import org.apache.taverna.biocatalogue.model.Resource;
-import org.apache.taverna.biocatalogue.model.ResourceManager;
-import org.apache.taverna.biocatalogue.model.Util;
-import org.apache.taverna.lang.ui.ReadOnlyTextArea;
-import org.apache.taverna.ui.perspectives.biocatalogue.integration.health_check.ServiceMonitoringStatusInterpreter;
-
-import org.apache.commons.lang.StringEscapeUtils;
-import org.biocatalogue.x2009.xml.rest.RestMethod;
-import org.biocatalogue.x2009.xml.rest.RestParameter;
-import org.biocatalogue.x2009.xml.rest.RestRepresentation;
-import org.biocatalogue.x2009.xml.rest.Service;
-import org.biocatalogue.x2009.xml.rest.RestMethod.Ancestors;
-
-
-/**
- * 
- * 
- * @author Sergejs Aleksejevs
- */
-public class RESTMethodListCellRenderer extends ExpandableOnDemandLoadedListCellRenderer
-{
-  private JLabel jlTypeIcon = new JLabel();
-  private JLabel jlItemStatus = new JLabel();
-  private JLabel jlItemTitle = new JLabel("X");
-  private JLabel jlPartOf = new JLabel("X");
-  private ReadOnlyTextArea jtDescription = new ReadOnlyTextArea(5, 80);
-  private JLabel jlMethodType = new JLabel("X");
-  private JLabel jlUrlTemplate = new JLabel("X");
-  private JLabel jlMethodParameters = new JLabel("X");
-  private JLabel jlInputRepresentations = new JLabel("X");
-  private JLabel jlOutputRepresentations = new JLabel("X");
-  
-  private GridBagConstraints c;
-  
-  private static Resource.TYPE resourceType = Resource.TYPE.RESTMethod;
-
-  
-  
-  public RESTMethodListCellRenderer() {
-	   jlItemTitle.setFont(jlItemTitle.getFont().deriveFont(Font.PLAIN, jlItemTitle.getFont().getSize() + 2));
-	    jtDescription.setOpaque(false);
-	    jtDescription.setLineWrap(true);
-	    jtDescription.setWrapStyleWord(true);
-  }
-  
-  
-  
-  /**
-   * This entry can be in one of two states:
-   * -- containing only the name of the resource and NOT loading further details;
-   * -- containing only the name of the resource and LOADING further details.
-   * 
-   * @param itemToRender
-   * @return
-   */
-  protected GridBagConstraints prepareInitiallyLoadingEntry(Object itemToRender)
-  {
-    LoadingResource resource = (LoadingResource)itemToRender;
-    
-    jlTypeIcon.setIcon(resourceType.getIcon());
-    jlItemStatus.setIcon(ResourceManager.getImageIcon(ResourceManager.SERVICE_STATUS_UNCHECKED_ICON_LARGE));
-    
-    jlItemTitle.setText("<html>" + StringEscapeUtils.escapeHtml(Resource.getDisplayNameForResource(resource)) + "<font color=\"gray\"><i>- fetching more information</i></font></html>");
-    
-    jlPartOf.setText("");
-    jtDescription.setText(" ");
-    jlMethodType.setText(" ");
-    jlUrlTemplate.setText(" ");
-    jlMethodParameters.setText(" ");
-    jlInputRepresentations.setText(" ");
-    jlOutputRepresentations.setText(" ");
-    
-    return (arrangeLayout());
-  }
-  
-  
-  /**
-   * 
-   * @param itemToRender
-   * @param expandedView <code>true</code> to indicate that this method generates the top
-   *                     fragment of the expanded list entry for this SOAP operation / REST method.
-   * @return
-   */
-  protected GridBagConstraints prepareLoadedEntry(Object itemToRender, boolean selected)
-  {
-    RestMethod restMethod = (RestMethod)itemToRender;;
-    
-    Ancestors ancestors = restMethod.getAncestors();
-    Service service = ancestors.getService();
-    String title = "<html>" + StringEscapeUtils.escapeHtml(Resource.getDisplayNameForResource(restMethod));
-
-    if (restMethod.isSetArchived() || service.isSetArchived()) {
-    	jlTypeIcon.setIcon(ResourceManager.getImageIcon(ResourceManager.WARNING_ICON));
-    	title = title + "<i> - this operation is archived and probably cannot be used</i></html>";
-    }
-    else {
-    	jlTypeIcon.setIcon(resourceType.getIcon());
-    	title = title + "</html>";
-    }
-    
-    // service status
-    jlItemStatus.setIcon(ServiceMonitoringStatusInterpreter.getStatusIcon(service, false));
-    jlItemTitle.setText(title);
-     
-    jlPartOf.setText("<html><b>Part of: </b>" + restMethod.getAncestors().getRestService().getResourceName() + "</html>");
-    
-    String strDescription = (restMethod.getDescription() == null || restMethod.getDescription().length() == 0 ?
-                             "No description" :
-                            	 Util.stripAllHTML(restMethod.getDescription()));
-    jtDescription.setText(strDescription);
-    
-    jlMethodType.setText("<html><b>HTTP Method: </b>" + StringEscapeUtils.escapeHtml(restMethod.getHttpMethodType().toString()) + "</html>");
-    jlUrlTemplate.setText("<html><b>URL Template: </b>" + StringEscapeUtils.escapeHtml(restMethod.getUrlTemplate()) + "</html>");
-    
-    List<String> names = new ArrayList<String>();
-    for (RestParameter restParameter : restMethod.getInputs().getParameters().getRestParameterList()) {
-      names.add(restParameter.getName() + (restParameter.getIsOptional() ? " (optional)" : ""));
-    }
-    
-    String methodParameters = "<b>" + names.size() + " " + Util.pluraliseNoun("Parameter", names.size()) + "</b>";
-    if(names.size() > 0) {
-      methodParameters += ": " + StringEscapeUtils.escapeHtml(Util.ensureLineLengthWithinString(Util.join(names, ", "), LINE_LENGTH, false));
-    }
-    methodParameters = "<html>" + methodParameters + "</html>";
-    jlMethodParameters.setText(methodParameters);
-    
-       names.clear();
-      for (RestRepresentation restRepresentation : restMethod.getInputs().getRepresentations().getRestRepresentationList()) {
-        names.add(restRepresentation.getContentType());
-      }
-      
-      String inputRepresentations = "<b>" + names.size() + " " + Util.pluraliseNoun("Input representation", names.size()) + "</b>";
-      if(names.size() > 0) {
-        inputRepresentations += ": " + StringEscapeUtils.escapeHtml(Util.ensureLineLengthWithinString(Util.join(names, ", "), LINE_LENGTH, false));
-      }
-      inputRepresentations = "<html>" + inputRepresentations + "</html>";
-      
-      jlInputRepresentations.setText(inputRepresentations);
-
-      // output representations
-      names.clear();
-      for (RestRepresentation restRepresentation : restMethod.getOutputs().getRepresentations().getRestRepresentationList()) {
-        names.add(restRepresentation.getContentType());
-      }
-      
-      String outputRepresentations = "<b>" + names.size() + " " + Util.pluraliseNoun("Output representation", names.size()) + "</b>";
-      if(names.size() > 0) {
-        outputRepresentations += ": " + StringEscapeUtils.escapeHtml(Util.ensureLineLengthWithinString(Util.join(names, ", "), LINE_LENGTH, false));
-      }
-      outputRepresentations = "<html>" + outputRepresentations + "</html>";
-      
-      jlOutputRepresentations.setText(outputRepresentations);
-    
-    return (arrangeLayout());
-  }
-  
-  
-  /**
-   * @return Final state of the {@link GridBagConstraints} instance
-   *         that was used to lay out components in the panel.
-   */
-  private GridBagConstraints arrangeLayout()
-  {
-    // POPULATE PANEL WITH PREPARED COMPONENTS
-    this.setLayout(new GridBagLayout());
-    c = new GridBagConstraints();
-    c.anchor = GridBagConstraints.NORTHWEST;
-    c.fill = GridBagConstraints.HORIZONTAL;
-    
-    c.gridx = 0;
-    c.gridy = 0;
-    c.weightx = 0;
-    c.insets = new Insets(8, 6, 6, 3);
-    this.add(jlTypeIcon, c);
-    
-    c.gridx++;
-    c.weightx = 1.0;
-    c.insets = new Insets(8, 3, 6, 3);
-    this.add(jlItemTitle, c);
-    
-    c.gridx++;
-    c.gridheight = 8;
-    c.weightx = 0;
-    c.weighty = 1.0;
-    this.add(jlItemStatus, c);
-    
-    c.gridx = 1;
-    c.gridy++;
-    c.gridheight = 1;
-    c.weightx = 1.0;
-    c.weighty = 0;
-    this.add(jlPartOf, c);
-    
-    c.fill = GridBagConstraints.NONE;
-    c.gridy++;
-    this.add(jtDescription, c);
-    
-    c.fill = GridBagConstraints.HORIZONTAL;
-    c.gridy++;
-    this.add(jlMethodType, c);
-    
-    c.gridy++;
-    this.add(jlUrlTemplate, c);
-    
-    c.gridy++;
-    this.add(jlMethodParameters, c);
-    
-    c.gridy++;
-    this.add(jlInputRepresentations, c);
-    
-    c.gridy++;
-    this.add(jlOutputRepresentations, c);
-    return (c);
-  }
-  
-@Override
-boolean shouldBeHidden(Object itemToRender) {
-	if (!(itemToRender instanceof RestMethod)) {
-		return false;
-	}
-    RestMethod restMethod = (RestMethod)itemToRender;;
-    
-    Ancestors ancestors = restMethod.getAncestors();
-    Service service = ancestors.getService();
-    String title = Resource.getDisplayNameForResource(restMethod);
-
-    if (restMethod.isSetArchived() || service.isSetArchived()) {
-    	return true;
-    }
-    else {
-    	return false;
-    }
-
-}
-  
-}

http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench/blob/52817a33/taverna-perspective-biocatalogue/src/main/java/org/apache/taverna/biocatalogue/ui/search_results/SOAPOperationListCellRenderer.java
----------------------------------------------------------------------
diff --git a/taverna-perspective-biocatalogue/src/main/java/org/apache/taverna/biocatalogue/ui/search_results/SOAPOperationListCellRenderer.java b/taverna-perspective-biocatalogue/src/main/java/org/apache/taverna/biocatalogue/ui/search_results/SOAPOperationListCellRenderer.java
deleted file mode 100644
index 4386d12..0000000
--- a/taverna-perspective-biocatalogue/src/main/java/org/apache/taverna/biocatalogue/ui/search_results/SOAPOperationListCellRenderer.java
+++ /dev/null
@@ -1,273 +0,0 @@
-package org.apache.taverna.biocatalogue.ui.search_results;
-/*
- * 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 java.awt.Font;
-import java.awt.GridBagConstraints;
-import java.awt.GridBagLayout;
-import java.awt.Insets;
-import java.util.ArrayList;
-import java.util.List;
-
-import javax.swing.ImageIcon;
-import javax.swing.JLabel;
-
-import org.apache.taverna.biocatalogue.model.LoadingExpandedResource;
-import org.apache.taverna.biocatalogue.model.LoadingResource;
-import org.apache.taverna.biocatalogue.model.Resource;
-import org.apache.taverna.biocatalogue.model.ResourceManager;
-import org.apache.taverna.biocatalogue.model.Util;
-import org.apache.taverna.lang.ui.ReadOnlyTextArea;
-import org.apache.taverna.ui.perspectives.biocatalogue.integration.health_check.ServiceMonitoringStatusInterpreter;
-
-import org.apache.commons.lang.StringEscapeUtils;
-import org.apache.commons.lang.StringUtils;
-import org.biocatalogue.x2009.xml.rest.Service;
-import org.biocatalogue.x2009.xml.rest.ServiceTechnologyType;
-import org.biocatalogue.x2009.xml.rest.SoapInput;
-import org.biocatalogue.x2009.xml.rest.SoapOperation;
-import org.biocatalogue.x2009.xml.rest.SoapOutput;
-import org.biocatalogue.x2009.xml.rest.SoapService;
-import org.biocatalogue.x2009.xml.rest.Service.ServiceTechnologyTypes;
-import org.biocatalogue.x2009.xml.rest.ServiceTechnologyType.Enum;
-import org.biocatalogue.x2009.xml.rest.SoapOperation.Ancestors;
-
-
-/**
- * 
- * 
- * @author Sergejs Aleksejevs
- */
-@SuppressWarnings("serial")
-public class SOAPOperationListCellRenderer extends ExpandableOnDemandLoadedListCellRenderer
-{
-	
-	private JLabel jlTypeIcon = new JLabel();
-  private JLabel jlItemStatus = new JLabel();
-  private JLabel jlItemTitle = new JLabel("X");
-  private JLabel jlPartOf = new JLabel("X");
-  private JLabel jlWsdlLocation = new JLabel("X");
-  private ReadOnlyTextArea jtDescription = new ReadOnlyTextArea(5,80);
-  private JLabel jlSoapInputs = new JLabel("X");
-  private JLabel jlSoapOutputs = new JLabel("X");
-  
-  private GridBagConstraints c;
-  
-  private static Resource.TYPE resourceType = Resource.TYPE.SOAPOperation;
-  
-  
-  public SOAPOperationListCellRenderer() {
-    jlItemTitle.setFont(jlItemTitle.getFont().deriveFont(Font.PLAIN, jlItemTitle.getFont().getSize() + 2));
-    jtDescription.setOpaque(false);
-    jtDescription.setLineWrap(true);
-    jtDescription.setWrapStyleWord(true);
-  }
-  
-  
-  /**
-   * This entry can be in one of two states:
-   * -- containing only the name of the resource and NOT loading further details;
-   * -- containing only the name of the resource and LOADING further details.
-   * 
-   * @param itemToRender
-   * @return
-   */
-  protected GridBagConstraints prepareInitiallyLoadingEntry(Object itemToRender)
-  {
-    LoadingResource resource = (LoadingResource)itemToRender;
-    
-    jlTypeIcon.setIcon(resourceType.getIcon());
-    jlItemStatus.setIcon(ResourceManager.getImageIcon(ResourceManager.SERVICE_STATUS_UNCHECKED_ICON_LARGE));
-       
-    jlItemTitle.setText("<html>" + StringEscapeUtils.escapeHtml(Resource.getDisplayNameForResource(resource)) + "<font color=\"gray\"><i>- fetching more information</i></font></html>");
-   
-    jlPartOf.setText(" ");
-    jlWsdlLocation.setText(" ");
-    jtDescription.setText("");
-    jlSoapInputs.setText(" ");
-    jlSoapOutputs.setText(" ");
-   
-    return (arrangeLayout());
-  }
-  
-  
-  /**
-   * 
-   * @param itemToRender
- * @param selected 
-   * @param expandedView <code>true</code> to indicate that this method generates the top
-   *                     fragment of the expanded list entry for this SOAP operation / REST method.
-   * @return
-   */
-  protected GridBagConstraints prepareLoadedEntry(Object itemToRender, boolean selected)
-  {
-    SoapOperation soapOp = (SoapOperation)itemToRender;
-    
-    Ancestors ancestors = soapOp.getAncestors();
-    SoapService soapService = ancestors.getSoapService();
-    Service service = ancestors.getService();
-    String title = StringEscapeUtils.escapeHtml(Resource.getDisplayNameForResource(soapOp));
-    
-    if (soapOp.isSetArchived() || service.isSetArchived()) {
-    	jlTypeIcon.setIcon(ResourceManager.getImageIcon(ResourceManager.WARNING_ICON));
-    	title = "<html>" + title + "<i> - this operation is archived and probably cannot be used</i></html>";
-    } else if (isSoapLab(service)) {
-       	jlTypeIcon.setIcon(ResourceManager.getImageIcon(ResourceManager.WARNING_ICON));
-    	title = "<html>" + title + "<i> - this operation can only be used as part of a SoapLab service</i></html>";
-    }
-    else {
-    	jlTypeIcon.setIcon(resourceType.getIcon());
-    	title = "<html>" + title + "</html>";
-   }
-    
-    // service status
-    jlItemStatus.setIcon(ServiceMonitoringStatusInterpreter.getStatusIcon(service, false));
-    jlItemTitle.setText(title);
-    
-    jlPartOf.setText("<html><b>Part of: </b>" + StringEscapeUtils.escapeHtml(soapOp.getAncestors().getSoapService().getResourceName()) + "</html>");
-    
-    jlWsdlLocation.setText("<html><b>WSDL location: </b>" + soapService.getWsdlLocation() + "</html>");
-    
-        String strDescription = (soapOp.getDescription() == null || soapOp.getDescription().length() == 0 ?
-                             "No description" :
-                            	 Util.stripAllHTML(soapOp.getDescription()));
-    
-            jtDescription.setText(strDescription);
-    
-    // add SOAP inputs
-    List<String> names = new ArrayList<String>();
-    for (SoapInput soapInput : soapOp.getInputs().getSoapInputList()) {
-      names.add(soapInput.getName());
-    }
-    
-    String soapInputs = "<b>" + names.size() + " " + Util.pluraliseNoun("Input", names.size()) + "</b>";
-    if(names.size() > 0) {
-      soapInputs += ": " + StringEscapeUtils.escapeHtml(Util.ensureLineLengthWithinString(Util.join(names, ", "), LINE_LENGTH, false));
-    }
-    soapInputs = "<html>" + soapInputs + "</html>";
-    jlSoapInputs.setText(soapInputs);
-    
-    c.gridy++;
-    this.add(jlSoapInputs, c);
-    
-    
-    // add SOAP outputs
-    names.clear();
-    for (SoapOutput soapOutput : soapOp.getOutputs().getSoapOutputList()) {
-      names.add(soapOutput.getName());
-    }
-    
-    String soapOutputs = "<b>" + names.size() + " " + Util.pluraliseNoun("Output", names.size()) + "</b>";
-    if(names.size() > 0) {
-      soapOutputs += ": " + StringEscapeUtils.escapeHtml(Util.ensureLineLengthWithinString(Util.join(names, ", "), LINE_LENGTH, false));
-    }
-    soapOutputs = "<html>" + soapOutputs + "</html>";
-    jlSoapOutputs.setText(soapOutputs);
-   
-    return (arrangeLayout());
-  }
-
-
-private boolean isSoapLab(Service service) {
-	boolean result = false;
-	ServiceTechnologyTypes serviceTechnologyTypes = service.getServiceTechnologyTypes();
-	if (serviceTechnologyTypes == null) {
-		return result;
-	}
-	List<Enum> typeList = serviceTechnologyTypes.getTypeList();
-	if (typeList == null) {
-		return result;
-	}
-	result = typeList.contains(ServiceTechnologyType.SOAPLAB);
-	return result;
-}
-  
-  
-  /**
-   * @return Final state of the {@link GridBagConstraints} instance
-   *         that was used to lay out components in the panel.
-   */
-  private GridBagConstraints arrangeLayout()
-  {
-	   // POPULATE PANEL WITH PREPARED COMPONENTS
-	    this.setLayout(new GridBagLayout());
-	    c = new GridBagConstraints();
-	    c.anchor = GridBagConstraints.NORTHWEST;
-	    c.fill = GridBagConstraints.HORIZONTAL;
-	    
-	    c.gridx = 0;
-	    c.gridy = 0;
-	    c.weightx = 0;
-	    c.insets = new Insets(8, 6, 6, 3);
-	    this.add(jlTypeIcon, c);
-	    
-	    c.gridx++;
-	    c.weightx = 1.0;
-	    c.insets = new Insets(8, 3, 6, 3);
-	    this.add(jlItemTitle, c);
-	    
-	    c.gridx++;
-	    c.gridheight = 7;
-	    c.weightx = 0;
-	    c.weighty = 1.0;
-	    this.add(jlItemStatus, c);
-	    
-	    c.gridx = 1;
-	    c.gridy++;
-	    c.gridheight = 1;
-	    c.weightx = 0;
-	    c.weighty = 0;
-	    this.add(jlPartOf, c);
-	    
-	    c.gridy++;
-	    this.add(jlWsdlLocation, c);
-	    
-	    c.fill = GridBagConstraints.NONE;
-	    c.gridy++;
-	    this.add(jtDescription, c);
-	    
-	    c.fill = GridBagConstraints.HORIZONTAL;
-	    c.gridy++;
-	    this.add(jlSoapInputs, c);
-	    
-	    c.fill = GridBagConstraints.HORIZONTAL;
-	    c.gridy++;
-	    this.add(jlSoapOutputs, c);
-	    
-	    return (c);
-  }
-  
-@Override
-boolean shouldBeHidden(Object itemToRender) {
-	if (!(itemToRender instanceof SoapOperation)) {
-		return false;
-	}
-	SoapOperation soapOp = (SoapOperation) itemToRender;
-	   Ancestors ancestors = soapOp.getAncestors();
-	    Service service = ancestors.getService();
-	    if (soapOp.isSetArchived() || service.isSetArchived()) {
-	    	return true;
-	    } else if (isSoapLab(service)) {
-	       	return true;
-	    }
-	    else {
-	    	return false;
-	   }
-
-}
-  
-}