Removed non-opensource code TableMap/TableSorter

These were copied from code found at
http://www.informit.com/guides/content.aspx?g=java&seqNum=57

but
https://web.archive.org/web/20151110082836/http://www.informit.com/guides/content.aspx?g=java&seqNum=57
does not declare any closed or open source license.

This could be replace with BSD3-licensed demos from
http://docs.oracle.com/javase/tutorial/uiswing/components/table.html
.. but it seems TableMap and TableSorter are not used anywhere
in Taverna Workbench 3 or its plugins - so safe to remove


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/a7761da4
Tree: 
http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench/tree/a7761da4
Diff: 
http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench/diff/a7761da4

Branch: refs/heads/master
Commit: a7761da444bbb0add71967b6bc3229fb101d13cc
Parents: 5f2bdc2
Author: Stian Soiland-Reyes <[email protected]>
Authored: Fri Oct 21 11:27:57 2016 +0200
Committer: Stian Soiland-Reyes <[email protected]>
Committed: Fri Oct 21 11:34:56 2016 +0200

----------------------------------------------------------------------
 .../org/apache/taverna/lang/ui/TableMap.java    |  83 -----
 .../org/apache/taverna/lang/ui/TableSorter.java | 355 -------------------
 2 files changed, 438 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench/blob/a7761da4/taverna-ui/src/main/java/org/apache/taverna/lang/ui/TableMap.java
----------------------------------------------------------------------
diff --git a/taverna-ui/src/main/java/org/apache/taverna/lang/ui/TableMap.java 
b/taverna-ui/src/main/java/org/apache/taverna/lang/ui/TableMap.java
deleted file mode 100644
index b3925b8..0000000
--- a/taverna-ui/src/main/java/org/apache/taverna/lang/ui/TableMap.java
+++ /dev/null
@@ -1,83 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-/*
-package org.apache.taverna.lang.ui;
-
-import javax.swing.table.AbstractTableModel;
-import javax.swing.table.TableModel;
-import javax.swing.event.TableModelListener;
-import javax.swing.event.TableModelEvent;
-
-/**
- * Copied from code found at 
http://www.informit.com/guides/content.aspx?g=java&seqNum=57
- *
- */
-public class TableMap extends AbstractTableModel implements TableModelListener 
{
-       protected TableModel model;
-
-       public TableModel getModel() {
-               return model;
-       }
-
-       public void setModel(TableModel model) {
-               this.model = model;
-               model.addTableModelListener(this);
-       }
-
-       // By default, implement TableModel by forwarding all messages
-       // to the model.
-
-       public Object getValueAt(int aRow, int aColumn) {
-               return model.getValueAt(aRow, aColumn);
-       }
-
-       public void setValueAt(Object aValue, int aRow, int aColumn) {
-               model.setValueAt(aValue, aRow, aColumn);
-       }
-
-       public int getRowCount() {
-               return (model == null) ? 0 : model.getRowCount();
-       }
-
-       public int getColumnCount() {
-               return (model == null) ? 0 : model.getColumnCount();
-       }
-
-       public String getColumnName(int aColumn) {
-               return model.getColumnName(aColumn);
-       }
-
-       public Class getColumnClass(int aColumn) {
-               return model.getColumnClass(aColumn);
-       }
-
-       public boolean isCellEditable(int row, int column) {
-               return model.isCellEditable(row, column);
-       }
-       
-       public int transposeRow(int row) {
-               return row;
-       }
-
-       //
-       // Implementation of the TableModelListener interface,
-       //
-       // By default forward all events to all the listeners.
-       public void tableChanged(TableModelEvent e) {
-               fireTableChanged(e);
-       }
-}

http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench/blob/a7761da4/taverna-ui/src/main/java/org/apache/taverna/lang/ui/TableSorter.java
----------------------------------------------------------------------
diff --git 
a/taverna-ui/src/main/java/org/apache/taverna/lang/ui/TableSorter.java 
b/taverna-ui/src/main/java/org/apache/taverna/lang/ui/TableSorter.java
deleted file mode 100644
index 4c9cc35..0000000
--- a/taverna-ui/src/main/java/org/apache/taverna/lang/ui/TableSorter.java
+++ /dev/null
@@ -1,355 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-/*
-package org.apache.taverna.lang.ui;
-
-/**
- * Copied from code found at 
http://www.informit.com/guides/content.aspx?g=java&seqNum=57
- */
-
-import java.util.Date;
-import java.util.Vector;
-
-import javax.swing.table.TableModel;
-import javax.swing.event.TableModelEvent;
-
-//Imports for picking up mouse events from the JTable.
-import java.awt.event.MouseAdapter;
-import java.awt.event.MouseEvent;
-import java.awt.event.InputEvent;
-import javax.swing.JTable;
-import javax.swing.table.JTableHeader;
-import javax.swing.table.TableColumnModel;
-
-public class TableSorter extends TableMap {
-       int indexes[];
-       Vector sortingColumns = new Vector();
-       boolean ascending = true;
-       int compares;
-
-       public TableSorter() {
-               indexes = new int[0]; // for consistency
-       }
-
-       public TableSorter(TableModel model) {
-               setModel(model);
-       }
-
-       public void setModel(TableModel model) {
-               super.setModel(model);
-               reallocateIndexes();
-       }
-
-       public int compareRowsByColumn(int row1, int row2, int column) {
-               Class type = model.getColumnClass(column);
-               TableModel data = model;
-
-               // Check for nulls.
-
-               Object o1 = data.getValueAt(row1, column);
-               Object o2 = data.getValueAt(row2, column);
-
-               // If both values are null, return 0.
-               if (o1 == null && o2 == null) {
-                       return 0;
-               } else if (o1 == null) { // Define null less than everything.
-                       return -1;
-               } else if (o2 == null) {
-                       return 1;
-               }
-
-               if (o1 instanceof Comparable) {
-                       return ((Comparable) o1).compareTo(o2);
-               }
-               /*
-                * We copy all returned values from the getValue call in case an
-                * optimised model is reusing one object to return many values. 
The
-                * Number subclasses in the JDK are immutable and so will not 
be used in
-                * this way but other subclasses of Number might want to do 
this to save
-                * space and avoid unnecessary heap allocation.
-                */
-
-               if (type.getSuperclass() == java.lang.Number.class) {
-                       Number n1 = (Number) data.getValueAt(row1, column);
-                       double d1 = n1.doubleValue();
-                       Number n2 = (Number) data.getValueAt(row2, column);
-                       double d2 = n2.doubleValue();
-
-                       if (d1 < d2) {
-                               return -1;
-                       } else if (d1 > d2) {
-                               return 1;
-                       } else {
-                               return 0;
-                       }
-               } else if (type == java.util.Date.class) {
-                       Date d1 = (Date) data.getValueAt(row1, column);
-                       long n1 = d1.getTime();
-                       Date d2 = (Date) data.getValueAt(row2, column);
-                       long n2 = d2.getTime();
-
-                       if (n1 < n2) {
-                               return -1;
-                       } else if (n1 > n2) {
-                               return 1;
-                       } else {
-                               return 0;
-                       }
-               } else if (type == String.class) {
-                       String s1 = (String) data.getValueAt(row1, column);
-                       String s2 = (String) data.getValueAt(row2, column);
-                       int result = s1.compareTo(s2);
-
-                       if (result < 0) {
-                               return -1;
-                       } else if (result > 0) {
-                               return 1;
-                       } else {
-                               return 0;
-                       }
-               } else if (type == Boolean.class) {
-                       Boolean bool1 = (Boolean) data.getValueAt(row1, column);
-                       boolean b1 = bool1.booleanValue();
-                       Boolean bool2 = (Boolean) data.getValueAt(row2, column);
-                       boolean b2 = bool2.booleanValue();
-
-                       if (b1 == b2) {
-                               return 0;
-                       } else if (b1) { // Define false < true
-                               return 1;
-                       } else {
-                               return -1;
-                       }
-               } else {
-                       Object v1 = data.getValueAt(row1, column);
-                       String s1 = v1.toString();
-                       Object v2 = data.getValueAt(row2, column);
-                       String s2 = v2.toString();
-                       int result = s1.compareTo(s2);
-
-                       if (result < 0) {
-                               return -1;
-                       } else if (result > 0) {
-                               return 1;
-                       } else {
-                               return 0;
-                       }
-               }
-       }
-
-       public int compare(int row1, int row2) {
-               compares++;
-               for (int level = 0; level < sortingColumns.size(); level++) {
-                       Integer column = (Integer) 
sortingColumns.elementAt(level);
-                       int result = compareRowsByColumn(row1, row2, 
column.intValue());
-                       if (result != 0) {
-                               return ascending ? result : -result;
-                       }
-               }
-               return 0;
-       }
-
-       public void reallocateIndexes() {
-               int rowCount = model.getRowCount();
-
-               // Set up a new array of indexes with the right number of 
elements
-               // for the new data model.
-               indexes = new int[rowCount];
-
-               // Initialise with the identity mapping.
-               for (int row = 0; row < rowCount; row++) {
-                       indexes[row] = row;
-               }
-       }
-
-       public void tableChanged(TableModelEvent e) {
-               // System.out.println("Sorter: tableChanged");
-               reallocateIndexes();
-
-               super.tableChanged(e);
-       }
-
-       public void checkModel() {
-               if (indexes.length != model.getRowCount()) {
-                       System.err.println("Sorter not informed of a change in 
model.");
-               }
-       }
-
-       public void sort(Object sender) {
-               checkModel();
-
-               compares = 0;
-               // n2sort();
-               // qsort(0, indexes.length-1);
-               shuttlesort((int[]) indexes.clone(), indexes, 0, 
indexes.length);
-               // System.out.println("Compares: "+compares);
-       }
-
-       public void n2sort() {
-               for (int i = 0; i < getRowCount(); i++) {
-                       for (int j = i + 1; j < getRowCount(); j++) {
-                               if (compare(indexes[i], indexes[j]) == -1) {
-                                       swap(i, j);
-                               }
-                       }
-               }
-       }
-
-       // This is a home-grown implementation which we have not had time
-       // to research - it may perform poorly in some circumstances. It
-       // requires twice the space of an in-place algorithm and makes
-       // NlogN assigments shuttling the values between the two
-       // arrays. The number of compares appears to vary between N-1 and
-       // NlogN depending on the initial order but the main reason for
-       // using it here is that, unlike qsort, it is stable.
-       public void shuttlesort(int from[], int to[], int low, int high) {
-               if (high - low < 2) {
-                       return;
-               }
-               int middle = (low + high) / 2;
-               shuttlesort(to, from, low, middle);
-               shuttlesort(to, from, middle, high);
-
-               int p = low;
-               int q = middle;
-
-               /*
-                * This is an optional short-cut; at each recursive call, check 
to see
-                * if the elements in this subset are already ordered. If so, 
no further
-                * comparisons are needed; the sub-array can just be copied. 
The array
-                * must be copied rather than assigned otherwise sister calls 
in the
-                * recursion might get out of sinc. When the number of elements 
is three
-                * they are partitioned so that the first set, [low, mid), has 
one
-                * element and and the second, [mid, high), has two. We skip the
-                * optimisation when the number of elements is three or less as 
the
-                * first compare in the normal merge will produce the same 
sequence of
-                * steps. This optimisation seems to be worthwhile for 
partially ordered
-                * lists but some analysis is needed to find out how the 
performance
-                * drops to Nlog(N) as the initial order diminishes - it may 
drop very
-                * quickly.
-                */
-
-               if (high - low >= 4 && compare(from[middle - 1], from[middle]) 
<= 0) {
-                       for (int i = low; i < high; i++) {
-                               to[i] = from[i];
-                       }
-                       return;
-               }
-
-               // A normal merge.
-
-               for (int i = low; i < high; i++) {
-                       if (q >= high || (p < middle && compare(from[p], 
from[q]) <= 0)) {
-                               to[i] = from[p++];
-                       } else {
-                               to[i] = from[q++];
-                       }
-               }
-       }
-
-       public void swap(int i, int j) {
-               int tmp = indexes[i];
-               indexes[i] = indexes[j];
-               indexes[j] = tmp;
-       }
-
-       // The mapping only affects the contents of the data rows.
-       // Pass all requests to these rows through the mapping array: "indexes".
-
-       public Object getValueAt(int aRow, int aColumn) {
-               checkModel();
-               return model.getValueAt(indexes[aRow], aColumn);
-       }
-
-       public void setValueAt(Object aValue, int aRow, int aColumn) {
-               checkModel();
-               model.setValueAt(aValue, indexes[aRow], aColumn);
-       }
-
-       public void sortByColumn(int column) {
-               sortByColumn(column, true);
-       }
-
-       public void sortByColumn(int column, boolean ascending) {
-               this.ascending = ascending;
-               sortingColumns.removeAllElements();
-               sortingColumns.addElement(new Integer(column));
-               sort(this);
-               super.tableChanged(new TableModelEvent(this));
-       }
-       
-       private int lastSortedColumn = -1;
-       private boolean lastAscending = false;
-       
-       public void sortColumn(JTable tableView, int column) {
-               int currentlySelectedRow = tableView.getSelectedRow();
-               int underlyingSelectedRow = -1;
-               if (currentlySelectedRow != -1) {
-                       underlyingSelectedRow = 
transposeRow(currentlySelectedRow);
-               }
-               // System.out.println("Sorting ...");
-               boolean ascendingColumn = true;
-               if (lastSortedColumn == column) {
-                       ascendingColumn = !lastAscending;
-               }
-               lastSortedColumn = column;
-               lastAscending = ascendingColumn;
-               this.sortByColumn(column, ascendingColumn);
-               if (underlyingSelectedRow != -1) {
-                       for (int row = 0; row < indexes.length; row++) {
-                               if (transposeRow(row) == underlyingSelectedRow) 
{
-                                       tableView.setRowSelectionInterval(row, 
row);
-                               }
-                       }
-               }               
-       }
-       
-       public void resort(JTable tableView) {
-               if (lastSortedColumn != -1) {
-                       lastAscending = !lastAscending;
-                       sortColumn(tableView, lastSortedColumn);
-               }
-       }
-
-       // There is no-where else to put this.
-       // Add a mouse listener to the Table to trigger a table sort
-       // when a column heading is clicked in the JTable.
-       public void addMouseListenerToHeaderInTable(JTable table) {
-               final TableSorter sorter = this;
-               final JTable tableView = table;
-               tableView.setColumnSelectionAllowed(false);
-               MouseAdapter listMouseListener = new MouseAdapter() {
-                       
-                       private int lastClickedColumn = -1;
-                       private boolean lastAscending = false;
-                       public void mouseClicked(MouseEvent e) {
-                               TableColumnModel columnModel = 
tableView.getColumnModel();
-                               int viewColumn = 
columnModel.getColumnIndexAtX(e.getX());
-                               int column = 
tableView.convertColumnIndexToModel(viewColumn);
-                               if (e.getClickCount() == 1 && column != -1) {
-                                       sortColumn(tableView, column);
-                               }
-                       }
-               };
-               JTableHeader th = tableView.getTableHeader();
-               th.addMouseListener(listMouseListener);
-       }
-       
-       public int transposeRow(int row) {
-               return indexes[row];
-       }
-}
\ No newline at end of file

Reply via email to