Author: kono
Date: 2012-07-30 13:49:24 -0700 (Mon, 30 Jul 2012)
New Revision: 30038
Modified:
core3/impl/trunk/table-browser-impl/src/main/java/org/cytoscape/browser/internal/AbstractTableBrowser.java
core3/impl/trunk/table-browser-impl/src/main/java/org/cytoscape/browser/internal/BrowserTable.java
core3/impl/trunk/table-browser-impl/src/main/java/org/cytoscape/browser/internal/CyActivator.java
core3/impl/trunk/table-browser-impl/src/main/java/org/cytoscape/browser/internal/DefaultTableBrowser.java
core3/impl/trunk/table-browser-impl/src/main/java/org/cytoscape/browser/internal/GlobalTableBrowser.java
core3/impl/trunk/table-browser-impl/src/main/java/org/cytoscape/browser/internal/PopupMenuHelper.java
Log:
Browser context menu problems fixed.
Modified:
core3/impl/trunk/table-browser-impl/src/main/java/org/cytoscape/browser/internal/AbstractTableBrowser.java
===================================================================
---
core3/impl/trunk/table-browser-impl/src/main/java/org/cytoscape/browser/internal/AbstractTableBrowser.java
2012-07-30 19:08:34 UTC (rev 30037)
+++
core3/impl/trunk/table-browser-impl/src/main/java/org/cytoscape/browser/internal/AbstractTableBrowser.java
2012-07-30 20:49:24 UTC (rev 30038)
@@ -61,7 +61,6 @@
protected CyTable currentTable;
protected final CyApplicationManager applicationManager;
protected final CyNetworkManager networkManager;
- private final OpenBrowser openBrowser;
private final PopupMenuHelper popupMenuHelper;
private final CyEventHelper eventHelper;
@@ -77,7 +76,6 @@
final CyNetworkTableManager
networkTableManager,
final CyServiceRegistrar
serviceRegistrar,
final EquationCompiler
compiler,
- final OpenBrowser openBrowser,
final CyNetworkManager
networkManager,
final TableTaskFactory
deleteTableTaskFactory,
final DialogTaskManager
guiTaskManager,
@@ -90,7 +88,6 @@
this.tabTitle = tabTitle;
this.networkManager = networkManager;
this.applicationManager = applicationManager;
- this.openBrowser = openBrowser;
this.popupMenuHelper = popupMenuHelper;
this.eventHelper = eventHelper;
@@ -202,7 +199,7 @@
BrowserTableModel btm = browserTableModels.get(currentTable);
if (btm == null && currentTable != null) {
- final BrowserTable browserTable = new
BrowserTable(openBrowser, compiler, popupMenuHelper,
+ final BrowserTable browserTable = new
BrowserTable(compiler, popupMenuHelper,
applicationManager, eventHelper,
tableManager);
btm = new BrowserTableModel(browserTable, currentTable,
compiler, tableManager);
Modified:
core3/impl/trunk/table-browser-impl/src/main/java/org/cytoscape/browser/internal/BrowserTable.java
===================================================================
---
core3/impl/trunk/table-browser-impl/src/main/java/org/cytoscape/browser/internal/BrowserTable.java
2012-07-30 19:08:34 UTC (rev 30037)
+++
core3/impl/trunk/table-browser-impl/src/main/java/org/cytoscape/browser/internal/BrowserTable.java
2012-07-30 20:49:24 UTC (rev 30038)
@@ -1,6 +1,5 @@
package org.cytoscape.browser.internal;
-
import java.awt.Color;
import java.awt.Component;
import java.awt.Dimension;
@@ -21,8 +20,6 @@
import java.awt.event.MouseMotionListener;
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
-import java.net.MalformedURLException;
-import java.net.URL;
import java.util.ArrayList;
import java.util.EventObject;
import java.util.HashMap;
@@ -44,6 +41,7 @@
import javax.swing.ListSelectionModel;
import javax.swing.SwingUtilities;
import javax.swing.border.Border;
+import javax.swing.border.TitledBorder;
import javax.swing.table.JTableHeader;
import javax.swing.table.TableCellEditor;
import javax.swing.table.TableCellRenderer;
@@ -60,48 +58,44 @@
import org.cytoscape.model.CyRow;
import org.cytoscape.model.CyTable;
import org.cytoscape.model.CyTableManager;
-import org.cytoscape.util.swing.OpenBrowser;
import org.cytoscape.view.model.CyNetworkView;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-
public class BrowserTable extends JTable implements MouseListener,
ActionListener, MouseMotionListener {
-
-
+
private static final long serialVersionUID = 4415856756184765301L;
private static final Logger logger =
LoggerFactory.getLogger(BrowserTable.class);
-
+
private static final Font BORDER_FONT = new Font("Sans-serif",
Font.BOLD, 12);
+
private static final TableCellRenderer cellRenderer = new
BrowserTableCellRenderer();
private static final String MAC_OS_ID = "mac";
-
+
private Clipboard systemClipboard;
private CellEditorRemover editorRemover = null;
- private Map<String, Map<String, String>> linkoutProps;
private final HashMap<String, Integer> columnWidthMap = new
HashMap<String, Integer>();
// For right-click menu
private JPopupMenu rightClickPopupMenu;
private JPopupMenu rightClickHeaderPopupMenu;
- private JPopupMenu cellMenu;
private JMenuItem openFormulaBuilderMenuItem = null;
- private final OpenBrowser openBrowser;
private final EquationCompiler compiler;
private final PopupMenuHelper popupMenuHelper;
private boolean updateColumnComparators;
-
+
private final CyApplicationManager applicationManager;
private final CyEventHelper eventHelper;
private final CyTableManager tableManager;
- public BrowserTable(final OpenBrowser openBrowser, final
EquationCompiler compiler,
- final PopupMenuHelper popupMenuHelper, final
CyApplicationManager applicationManager,
- final CyEventHelper eventHelper, final CyTableManager
tableManager) {
- this.openBrowser = openBrowser;
- this.compiler = compiler;
+ private JPopupMenu cellMenu;
+
+ public BrowserTable(final EquationCompiler compiler, final
PopupMenuHelper popupMenuHelper,
+ final CyApplicationManager applicationManager, final
CyEventHelper eventHelper,
+ final CyTableManager tableManager) {
+ this.compiler = compiler;
this.popupMenuHelper = popupMenuHelper;
this.updateColumnComparators = false;
this.applicationManager = applicationManager;
@@ -131,7 +125,7 @@
protected void initHeader() {
this.setBackground(Color.white);
-
+
final JTableHeader header = getTableHeader();
header.addMouseMotionListener(this);
header.setBackground(Color.white);
@@ -146,103 +140,78 @@
// Event handler. Define actions when mouse is clicked.
addMouseListener(new MouseAdapter() {
- public void mouseClicked(MouseEvent e) {
- final int column =
getColumnModel().getColumnIndexAtX(e.getX());
- final int row = e.getY() /
getRowHeight();
- final BrowserTableModel tableModel =
(BrowserTableModel)table.getModel();
+ @Override
+ public void mouseClicked(MouseEvent e) {
+ final int column =
getColumnModel().getColumnIndexAtX(e.getX());
+ final int row = e.getY() / getRowHeight();
- // Bail out if we're at the ID column:
- if (tableModel.isPrimaryKey(column))
- return;
+ final BrowserTableModel tableModel =
(BrowserTableModel) table.getModel();
- // Make sure the column and row we're
clicking on actually exists!
- if (column >=
tableModel.getColumnCount() || row >= tableModel.getRowCount())
- return;
+ // Bail out if we're at the ID column:
+ if (tableModel.isPrimaryKey(column))
+ return;
- final ValidatedObjectAndEditString
objectAndEditString =
-
(ValidatedObjectAndEditString)getValueAt(row, column);
-// getSelected();
+ // Make sure the column and row we're clicking
on actually
+ // exists!
+ if (column >= tableModel.getColumnCount() ||
row >= tableModel.getRowCount())
+ return;
- // If action is right click, then show
edit pop-up menu
- if
((SwingUtilities.isRightMouseButton(e))
- || (isMacPlatform() &&
e.isControlDown()))
- {
- final CyColumn cyColumn =
-
tableModel.getColumn(column);
- final Object primaryKeyValue =
-
((ValidatedObjectAndEditString)tableModel.getValueAt(row,
tableModel.getDataTable().getPrimaryKey().getName()))
- .getValidatedObject();
-
popupMenuHelper.createTableCellMenu(cyColumn,
-
primaryKeyValue,
-
table, e.getX(),
-
e.getY());
- } else if
(SwingUtilities.isLeftMouseButton(e) && (getSelectedRows().length != 0)) {
-
- showListContents(e);
+ // If action is right click, then show edit
pop-up menu
+ if ((SwingUtilities.isRightMouseButton(e)) ||
(isMacPlatform() && e.isControlDown())) {
+ final CyColumn cyColumn =
tableModel.getColumn(column);
+ final Object primaryKeyValue =
((ValidatedObjectAndEditString) tableModel.getValueAt(row,
+
tableModel.getDataTable().getPrimaryKey().getName())).getValidatedObject();
+
popupMenuHelper.createTableCellMenu(cyColumn, primaryKeyValue, table, e.getX(),
e.getY());
+ } else if (SwingUtilities.isLeftMouseButton(e)
&& (getSelectedRows().length != 0)) {
+ // Display List menu.
+ showListContents(e);
+ }
+ }
- if (row >= getRowCount() || row
< 0 || column >= getColumnCount() || column < 0)
- return;
-
- if (objectAndEditString != null
&& objectAndEditString.getValidatedObject() != null
- &&
objectAndEditString.getValidatedObject().getClass() == String.class)
- {
- URL url = null;
- try {
- url = new
URL((String)objectAndEditString.getValidatedObject());
- } catch (final
MalformedURLException e1) {
- // If invalid,
just ignore.
- }
-
- if (url != null)
-
openBrowser.openURL(url.toString());
- }
-
+ @Override
+ public void mouseReleased(MouseEvent e) {
+ SwingUtilities.invokeLater(new Runnable() {
+ @Override
+ public void run() {
+ selectFromTable();
}
-
- } // mouseClicked
-
- @Override
- public void mouseReleased(MouseEvent e) {
- SwingUtilities.invokeLater(new
Runnable() {
- @Override
- public void run() {
- selectFromTable();
- }
- });
- }
- });
+ });
+ }
+ });
}
-
-
+
private void selectFromTable() {
final TableModel model = this.getModel();
- if(model instanceof BrowserTableModel == false)
+ if (model instanceof BrowserTableModel == false)
return;
-
+
final BrowserTableModel btModel = (BrowserTableModel) model;
-
- if(btModel.isShowAll() == false)
+
+ if (btModel.isShowAll() == false)
return;
-
+
final CyTable table = btModel.getDataTable();
final CyColumn pKey = table.getPrimaryKey();
final String pKeyName = pKey.getName();
-
+
final int[] rowsSelected = getSelectedRows();
if (rowsSelected.length == 0)
return;
-
+
final int selectedRowCount = getSelectedRowCount();
-
+
final Set<CyRow> targetRows = new HashSet<CyRow>();
- for(int i=0; i<selectedRowCount; i++) {
- //getting the row from data table solves the problem
with hidden or moved SUID column. However, since the rows might be sorted we
need to convert the index to model
- final ValidatedObjectAndEditString selected =
(ValidatedObjectAndEditString) btModel.getValueAt(rowsSelected[i], pKeyName);
+ for (int i = 0; i < selectedRowCount; i++) {
+ // getting the row from data table solves the problem
with hidden or
+ // moved SUID column. However, since the rows might be
sorted we
+ // need to convert the index to model
+ final ValidatedObjectAndEditString selected =
(ValidatedObjectAndEditString) btModel.getValueAt(
+ rowsSelected[i], pKeyName);
targetRows.add(btModel.getRow(selected.getValidatedObject()));
}
-
+
// Clear selection for non-global table
if (tableManager.getGlobalTables().contains(table) == false) {
List<CyRow> allRows =
btModel.getDataTable().getAllRows();
@@ -252,7 +221,7 @@
row.set(CyNetwork.SELECTED, true);
continue;
}
-
+
if (val != null && (val == true))
row.set(CyNetwork.SELECTED, false);
@@ -301,12 +270,13 @@
}
TableCellEditor editor = getCellEditor(row, column);
-
- // remember the table row, because tableModel will disappear if
- // user click on open space on canvas, so we have to remember
it before it is gone
- BrowserTableModel model = (BrowserTableModel) this.getModel();
+
+ // remember the table row, because tableModel will disappear if
+ // user click on open space on canvas, so we have to remember
it before
+ // it is gone
+ BrowserTableModel model = (BrowserTableModel) this.getModel();
editorRemover.setCellData(model.getCellData(row, column));
-
+
if ((editor != null) && editor.isCellEditable(e)) {
// Do this first so that the bounds of the JTextArea
editor
// will be correct.
@@ -321,42 +291,33 @@
removeEditor();
return false;
}
-
-
+
Rectangle cellRect = getCellRect(row, column, false);
if (editor instanceof MultiLineTableCellEditor) {
Dimension prefSize =
editorComp.getPreferredSize();
- ((JComponent)
editorComp).putClientProperty(MultiLineTableCellEditor.UPDATE_BOUNDS,
-
Boolean.TRUE);
- editorComp.setBounds(cellRect.x, cellRect.y,
- Math.max(cellRect.width,
prefSize.width),
- Math.max(cellRect.height,
prefSize.height));
- ((JComponent)
editorComp).putClientProperty(MultiLineTableCellEditor.UPDATE_BOUNDS,
-
Boolean.FALSE);
+ ((JComponent)
editorComp).putClientProperty(MultiLineTableCellEditor.UPDATE_BOUNDS,
Boolean.TRUE);
+ editorComp.setBounds(cellRect.x, cellRect.y,
Math.max(cellRect.width, prefSize.width),
+ Math.max(cellRect.height,
prefSize.height));
+ ((JComponent)
editorComp).putClientProperty(MultiLineTableCellEditor.UPDATE_BOUNDS,
Boolean.FALSE);
} else
editorComp.setBounds(cellRect);
add(editorComp);
editorComp.validate();
-
-
+
return true;
}
return false;
}
-
- /**
- * Display elements in the list objects.
- */
public void showListContents(MouseEvent e) {
-
+
final int column = this.getSelectedColumn();
final int row = this.getSelectedRow();
- final BrowserTableModel model = (BrowserTableModel)getModel();
+ final BrowserTableModel model = (BrowserTableModel) getModel();
final Class<?> columnType = model.getColumn(column).getType();
if (columnType == List.class) {
@@ -364,28 +325,18 @@
if (value != null) {
final List<?> list = (List<?>)
value.getValidatedObject();
-
- if (list != null) {
+ if (list != null && !list.isEmpty()) {
cellMenu = new JPopupMenu();
- final Object[] listItems =
list.toArray();
-
- if (listItems.length != 0) {
- final String idField =
model.getAttributes().getPrimaryKey().getName();
- getCellContentView(List.class,
listItems, idField, e);
- }
+ getCellContentView(List.class, list,
"List Contains:", e);
}
}
}
}
- private void getCellContentView(final Class<?> type, final Object[]
listItems, final String idField,
- final MouseEvent e)
- {
- final int column = getColumnModel().getColumnIndexAtX(e.getX());
- final int row = e.getY() / getRowHeight();
+ private void getCellContentView(final Class<?> type, final List<?>
listItems, final String borderTitle,
+ final MouseEvent e) {
JMenu curItem = null;
-
String dispName;
for (final Object item : listItems) {
@@ -399,62 +350,39 @@
curItem.setBackground(Color.white);
curItem.add(getPopupMenu());
- JMenuItem openURL = new JMenuItem("Open as hyper
link...");
-
- openURL.addActionListener(new
java.awt.event.ActionListener() {
- public void
actionPerformed(java.awt.event.ActionEvent e) {
-
openBrowser.openURL(item.toString());
- }
- });
- curItem.add(openURL);
-
JMenuItem copyAll = new JMenuItem("Copy all");
copyAll.addActionListener(new ActionListener() {
- public void actionPerformed(ActionEvent
arg0) {
- StringBuilder builder = new
StringBuilder();
+ public void actionPerformed(ActionEvent arg0) {
+ StringBuilder builder = new
StringBuilder();
- for (Object oneEntry :
listItems) {
-
builder.append(oneEntry.toString() + "\t");
- }
-
- final StringSelection selection
=
- new
StringSelection(builder.toString());
- systemClipboard =
Toolkit.getDefaultToolkit().getSystemClipboard();
-
systemClipboard.setContents(selection, selection);
+ for (Object oneEntry : listItems) {
+
builder.append(oneEntry.toString() + "\t");
}
- });
+
+ final StringSelection selection = new
StringSelection(builder.toString());
+ systemClipboard =
Toolkit.getDefaultToolkit().getSystemClipboard();
+ systemClipboard.setContents(selection,
selection);
+ }
+ });
curItem.add(copyAll);
JMenuItem copy = new JMenuItem("Copy one entry");
copy.addActionListener(new ActionListener() {
- public void actionPerformed(ActionEvent
arg0) {
- final StringSelection selection
=
- new
StringSelection(item.toString());
- systemClipboard =
Toolkit.getDefaultToolkit().getSystemClipboard();
-
systemClipboard.setContents(selection, selection);
- }
- });
+ public void actionPerformed(ActionEvent arg0) {
+ final StringSelection selection = new
StringSelection(item.toString());
+ systemClipboard =
Toolkit.getDefaultToolkit().getSystemClipboard();
+ systemClipboard.setContents(selection,
selection);
+ }
+ });
+
curItem.add(copy);
+ curItem.add(popupMenuHelper.getOpenLinkMenu(dispName));
- if (item.toString().startsWith("http://")) {
- curItem.getMenuComponent(1).setEnabled(true);
- } else
- curItem.getMenuComponent(1).setEnabled(false);
-
- curItem.getMenuComponent(2).setEnabled(true);
-
- if (type == List.class)
- curItem.add(new OpenURLMenu(item.toString(),
linkoutProps, openBrowser));
- else
- curItem.add(new
OpenURLMenu(item.toString().split("=")[1], linkoutProps, openBrowser));
-
cellMenu.add(curItem);
}
- final Border popupBorder =
BorderFactory.createTitledBorder(null, idField,
-
javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION,
-
javax.swing.border.TitledBorder.DEFAULT_POSITION,
-
BORDER_FONT, Color.BLUE);
+ final Border popupBorder =
BorderFactory.createTitledBorder(null, borderTitle,
+ TitledBorder.DEFAULT_JUSTIFICATION,
TitledBorder.DEFAULT_POSITION, BORDER_FONT, Color.BLUE);
cellMenu.setBorder(popupBorder);
cellMenu.setBackground(Color.WHITE);
cellMenu.show(e.getComponent(), e.getX(), e.getY());
@@ -462,7 +390,7 @@
/**
* This method initializes rightClickPopupMenu
- *
+ *
* @return the inilialised pop-up menu
*/
public JPopupMenu getPopupMenu() {
@@ -472,48 +400,27 @@
rightClickPopupMenu = new JPopupMenu();
openFormulaBuilderMenuItem = new JMenuItem("Open Formula
Builder");
-/*
- copyMenuItem = new JMenuItem("Copy");
- copyToCurrentSelectionMenuItem = new JMenuItem("Copy to Current
Selection");
- copyToCurrentSelectionMenuItem.setEnabled(false);
- copyFormulaToCurrentSelectionMenuItem = new JMenuItem("Copy
Formula to Current Selection");
- copyFormulaToCurrentSelectionMenuItem.setEnabled(false);
- copyToEntireAttributeMenuItem = new JMenuItem("Copy to Entire
Attribute");
- copyToEntireAttributeMenuItem.setEnabled(false);
- copyFormulaToEntireAttributeMenuItem = new JMenuItem("Copy
Formula to Entire Attribute");
- copyFormulaToEntireAttributeMenuItem.setEnabled(false);
- newSelectionMenuItem = new JMenuItem("Select from Table");
- exportMenu = new JMenu("Export...");
- exportCellsMenuItem = new JMenuItem("Selected Cells");
- exportTableMenuItem = new JMenuItem("Entire Table");
- selectAllMenuItem = new JMenuItem("Select All");
- coloringMenuItem = new JCheckBoxMenuItem("On/Off Coloring");
-*/
-
final JTable table = this;
openFormulaBuilderMenuItem.addActionListener(new
java.awt.event.ActionListener() {
- public void actionPerformed(final ActionEvent
e) {
- final int cellRow =
table.getSelectedRow();
- final int cellColumn =
table.getSelectedColumn();
- final BrowserTableModel tableModel =
(BrowserTableModel)getModel();
- final JFrame rootFrame =
(JFrame)SwingUtilities.getRoot(table);
- if (cellRow == -1 || cellColumn == -1
- ||
!tableModel.isCellEditable(cellRow, cellColumn))
-
JOptionPane.showMessageDialog(rootFrame,
-
"Can't enter a formula w/o a selected cell.",
-
"Information", JOptionPane.INFORMATION_MESSAGE);
- else {
- final String columnName =
tableModel.getColumnName(cellColumn);
- final Map<String, Class>
attribNameToTypeMap = new HashMap<String, Class>();
- FormulaBuilderDialog
formulaBuilderDialog =
- new
FormulaBuilderDialog(compiler, tableModel,
-
rootFrame, columnName);
-
formulaBuilderDialog.setLocationRelativeTo(rootFrame);
-
formulaBuilderDialog.setVisible(true);
- }
+ public void actionPerformed(final ActionEvent e) {
+ final int cellRow = table.getSelectedRow();
+ final int cellColumn =
table.getSelectedColumn();
+ final BrowserTableModel tableModel =
(BrowserTableModel) getModel();
+ final JFrame rootFrame = (JFrame)
SwingUtilities.getRoot(table);
+ if (cellRow == -1 || cellColumn == -1 ||
!tableModel.isCellEditable(cellRow, cellColumn))
+
JOptionPane.showMessageDialog(rootFrame, "Can't enter a formula w/o a selected
cell.",
+ "Information",
JOptionPane.INFORMATION_MESSAGE);
+ else {
+ final String columnName =
tableModel.getColumnName(cellColumn);
+ final Map<String, Class>
attribNameToTypeMap = new HashMap<String, Class>();
+ FormulaBuilderDialog
formulaBuilderDialog = new FormulaBuilderDialog(compiler, tableModel,
+ rootFrame, columnName);
+
formulaBuilderDialog.setLocationRelativeTo(rootFrame);
+ formulaBuilderDialog.setVisible(true);
}
- });
+ }
+ });
return rightClickPopupMenu;
}
@@ -523,31 +430,12 @@
return rightClickHeaderPopupMenu;
rightClickHeaderPopupMenu = new JPopupMenu();
-/*
- final JMenuItem openFormulaBuilderMenuItem = new
JMenuItem("Open Formula Builder");
- final TableColumnModel columnModel = getColumnModel();
- final JTable table = this;
- openFormulaBuilderMenuItem.addActionListener(new
java.awt.event.ActionListener() {
- public void actionPerformed(final ActionEvent
event) {
- final int cellColumn =
columnModel.getColumnIndexAtX(mouseX);
- final String columnName =
tableModel.getColumnName(cellColumn);
- final Map<String, Class>
attribNameToTypeMap = new HashMap<String, Class>();
- initAttribNameToTypeMap(objectType,
columnName, attribNameToTypeMap);
- formulaBuilderDialog =
- new
FormulaBuilderDialog(tableModel, table, objectType, Cytoscape.getDesktop(),
-
attribNameToTypeMap, columnName);
-
formulaBuilderDialog.setLocationRelativeTo(Cytoscape.getDesktop());
- formulaBuilderDialog.setVisible(true);
- }
- });
- rightClickHeaderPopupMenu.add(openFormulaBuilderMenuItem);
-*/
return rightClickHeaderPopupMenu;
}
@Override
- public void mouseReleased(MouseEvent event) {
+ public void mouseReleased(MouseEvent event) {
}
@Override
@@ -556,17 +444,16 @@
@Override
public void mouseClicked(final MouseEvent event) {
- final int cursorType = getTableHeader().getCursor().getType();
if (event.getButton() == MouseEvent.BUTTON3) {
final int column =
getColumnModel().getColumnIndexAtX(event.getX());
- final BrowserTableModel tableModel =
(BrowserTableModel)getModel();
+ final BrowserTableModel tableModel =
(BrowserTableModel) getModel();
// Make sure the column we're clicking on actually
exists!
if (column >= tableModel.getColumnCount() || column < 0)
return;
// Ignore clicks on the ID column:
- if ( tableModel.isPrimaryKey(column))
+ if (tableModel.isPrimaryKey(column))
return;
final CyColumn cyColumn = tableModel.getColumn(column);
@@ -576,7 +463,7 @@
@Override
public void mouseEntered(MouseEvent event) {
-
+
}
@Override
@@ -605,13 +492,11 @@
if (numcols == 0 && numrows == 0)
return null;
- if (!((numrows - 1 == rowsselected[rowsselected.length - 1] -
rowsselected[0]
- && numrows == rowsselected.length)
- && (numcols - 1 == colsselected[colsselected.length - 1]
- colsselected[0]
- && numcols == colsselected.length))) {
- final JFrame rootFrame =
(JFrame)SwingUtilities.getRoot(this);
- JOptionPane.showMessageDialog(rootFrame, "Invalid Copy
Selection",
- "Invalid Copy Selection",
JOptionPane.ERROR_MESSAGE);
+ if (!((numrows - 1 == rowsselected[rowsselected.length - 1] -
rowsselected[0] && numrows == rowsselected.length) && (numcols - 1 ==
colsselected[colsselected.length - 1]
+ - colsselected[0] && numcols ==
colsselected.length))) {
+ final JFrame rootFrame = (JFrame)
SwingUtilities.getRoot(this);
+ JOptionPane.showMessageDialog(rootFrame, "Invalid Copy
Selection", "Invalid Copy Selection",
+ JOptionPane.ERROR_MESSAGE);
return null;
}
@@ -622,7 +507,7 @@
if (cellValue == null)
continue;
- final String cellText =
((ValidatedObjectAndEditString)cellValue).getEditString();
+ final String cellText =
((ValidatedObjectAndEditString) cellValue).getEditString();
sbf.append(cellText);
if (j < (numcols - 1))
@@ -642,11 +527,11 @@
@Override
public void mouseDragged(MouseEvent e) {
// save the column width, if user adjust column width manually
- if (e.getSource() instanceof JTableHeader){
+ if (e.getSource() instanceof JTableHeader) {
final int index =
getColumnModel().getColumnIndexAtX(e.getX());
- if (index != -1){
+ if (index != -1) {
int colWidth =
getColumnModel().getColumn(index).getWidth();
-
this.columnWidthMap.put(this.getColumnName(index), new Integer(colWidth));
+
this.columnWidthMap.put(this.getColumnName(index), new Integer(colWidth));
}
}
}
@@ -658,7 +543,7 @@
private class CellEditorRemover implements PropertyChangeListener {
private final KeyboardFocusManager focusManager;
private BrowserTableModel model;
- private int row =-1, column = -1;
+ private int row = -1, column = -1;
private Vector cellVect = null;
public CellEditorRemover(final KeyboardFocusManager fm) {
@@ -678,13 +563,13 @@
return;
} else if (c instanceof Window) {
if (c ==
SwingUtilities.getRoot(BrowserTable.this)) {
-
+
try {
getCellEditor().stopCellEditing();
- }
- catch (Exception e){
+ } catch (Exception e) {
getCellEditor().cancelCellEditing();
- //Update the cell data
based on the remembered value
+ // Update the cell data
based on the remembered
+ // value
updateAttributeAfterCellLostFocus();
}
}
@@ -695,47 +580,47 @@
c = c.getParent();
}
}
-
- // Cell data passed from previous TableModel, because
tableModel will disappear if
- // user click on open space on canvas, so we have to remember
it before it is gone
- public void setCellData(Vector cellVect){
+
+ // Cell data passed from previous TableModel, because
tableModel will
+ // disappear if
+ // user click on open space on canvas, so we have to remember
it before
+ // it is gone
+ public void setCellData(Vector cellVect) {
this.cellVect = cellVect;
}
-
- private void updateAttributeAfterCellLostFocus(){
-
+
+ private void updateAttributeAfterCellLostFocus() {
+
CyRow rowObj = (CyRow) cellVect.get(0);
- String columnName = (String)cellVect.get(1);
-
- ArrayList parsedData =
TableBrowserUtil.parseCellInput(rowObj.getTable(), columnName,
MultiLineTableCellEditor.lastValueUserEntered);
-
- if (parsedData.get(0) != null){
- rowObj.set(columnName,
MultiLineTableCellEditor.lastValueUserEntered);
- }
- else {
+ String columnName = (String) cellVect.get(1);
+
+ ArrayList parsedData =
TableBrowserUtil.parseCellInput(rowObj.getTable(), columnName,
+
MultiLineTableCellEditor.lastValueUserEntered);
+
+ if (parsedData.get(0) != null) {
+ rowObj.set(columnName,
MultiLineTableCellEditor.lastValueUserEntered);
+ } else {
// Error
// discard the change
}
- }
+ }
}
-
-
+
public void addColumn(final TableColumn aColumn) {
super.addColumn(aColumn);
if (!updateColumnComparators)
return;
- final TableRowSorter rowSorter = (TableRowSorter)getRowSorter();
+ final TableRowSorter rowSorter = (TableRowSorter)
getRowSorter();
if (rowSorter == null)
return;
- final BrowserTableModel tableModel =
(BrowserTableModel)getModel();
+ final BrowserTableModel tableModel = (BrowserTableModel)
getModel();
final Class<?> rowDataType =
tableModel.getColumn(aColumn.getModelIndex()).getType();
- rowSorter.setComparator(aColumn.getModelIndex(),
- new
ValidatedObjectAndEditStringComparator(rowDataType));
+ rowSorter.setComparator(aColumn.getModelIndex(), new
ValidatedObjectAndEditStringComparator(rowDataType));
}
-
+
@Override
public void paint(Graphics graphics) {
synchronized (getModel()) {
@@ -743,4 +628,3 @@
}
}
}
-
Modified:
core3/impl/trunk/table-browser-impl/src/main/java/org/cytoscape/browser/internal/CyActivator.java
===================================================================
---
core3/impl/trunk/table-browser-impl/src/main/java/org/cytoscape/browser/internal/CyActivator.java
2012-07-30 19:08:34 UTC (rev 30037)
+++
core3/impl/trunk/table-browser-impl/src/main/java/org/cytoscape/browser/internal/CyActivator.java
2012-07-30 20:49:24 UTC (rev 30038)
@@ -1,34 +1,25 @@
package org.cytoscape.browser.internal;
-import org.cytoscape.util.swing.OpenBrowser;
+import java.util.Properties;
+
+import org.cytoscape.application.CyApplicationManager;
import org.cytoscape.equations.EquationCompiler;
import org.cytoscape.event.CyEventHelper;
-import org.cytoscape.model.CyNetworkManager;
-import org.cytoscape.application.CyApplicationManager;
-import org.cytoscape.service.util.CyServiceRegistrar;
-import org.cytoscape.task.TableTaskFactory;
import org.cytoscape.model.CyEdge;
import org.cytoscape.model.CyNetwork;
+import org.cytoscape.model.CyNetworkManager;
+import org.cytoscape.model.CyNetworkTableManager;
import org.cytoscape.model.CyNode;
import org.cytoscape.model.CyTableManager;
-import org.cytoscape.model.CyNetworkTableManager;
-import org.cytoscape.work.swing.DialogTaskManager;
-
-import org.cytoscape.browser.internal.AbstractTableBrowser;
-import org.cytoscape.browser.internal.PopupMenuHelper;
-
-
+import org.cytoscape.service.util.AbstractCyActivator;
+import org.cytoscape.service.util.CyServiceRegistrar;
import org.cytoscape.task.TableCellTaskFactory;
import org.cytoscape.task.TableColumnTaskFactory;
import org.cytoscape.task.destroy.DeleteTableTaskFactory;
-import org.cytoscape.task.edit.MapGlobalToLocalTableTaskFactory;
-
+import org.cytoscape.util.swing.OpenBrowser;
+import org.cytoscape.work.swing.DialogTaskManager;
import org.osgi.framework.BundleContext;
-import org.cytoscape.service.util.AbstractCyActivator;
-
-import java.util.Properties;
-
public class CyActivator extends AbstractCyActivator {
public CyActivator() {
super();
@@ -46,18 +37,16 @@
DialogTaskManager guiTaskManagerServiceRef =
getService(bc,DialogTaskManager.class);
CyApplicationManager cyApplicationManagerServiceRef =
getService(bc,CyApplicationManager.class);
CyNetworkTableManager cyNetworkTableManagerServiceRef =
getService(bc,CyNetworkTableManager.class);
- //MapGlobalToLocalTableTaskFactory
mapGlobalTableTaskFactoryServiceRef =
getService(bc,MapGlobalToLocalTableTaskFactory.class);
CyEventHelper cyEventHelperServiceRef =
getService(bc,CyEventHelper.class);
- PopupMenuHelper popupMenuHelper = new
PopupMenuHelper(guiTaskManagerServiceRef);
+ PopupMenuHelper popupMenuHelper = new
PopupMenuHelper(guiTaskManagerServiceRef, openBrowserServiceRef);
- AbstractTableBrowser nodeTableBrowser = new
DefaultTableBrowser("Node Attributes", CyNode.class,
cyTableManagerServiceRef,cyNetworkTableManagerServiceRef,cyServiceRegistrarServiceRef,compilerServiceRef,openBrowserServiceRef,cyNetworkManagerServiceRef,deleteTableTaskFactoryService,guiTaskManagerServiceRef,popupMenuHelper,cyApplicationManagerServiceRef,
cyEventHelperServiceRef);//, mapGlobalTableTaskFactoryServiceRef);
- AbstractTableBrowser edgeTableBrowser = new
DefaultTableBrowser("Edge Attributes", CyEdge.class,
cyTableManagerServiceRef,cyNetworkTableManagerServiceRef,cyServiceRegistrarServiceRef,compilerServiceRef,openBrowserServiceRef,cyNetworkManagerServiceRef,deleteTableTaskFactoryService,guiTaskManagerServiceRef,popupMenuHelper,cyApplicationManagerServiceRef,
cyEventHelperServiceRef);//, mapGlobalTableTaskFactoryServiceRef);
- AbstractTableBrowser networkTableBrowser = new
DefaultTableBrowser("Network Attributes", CyNetwork.class,
cyTableManagerServiceRef,cyNetworkTableManagerServiceRef,cyServiceRegistrarServiceRef,compilerServiceRef,openBrowserServiceRef,cyNetworkManagerServiceRef,deleteTableTaskFactoryService,guiTaskManagerServiceRef,popupMenuHelper,cyApplicationManagerServiceRef,
cyEventHelperServiceRef);//, mapGlobalTableTaskFactoryServiceRef);
+ AbstractTableBrowser nodeTableBrowser = new
DefaultTableBrowser("Node Attributes", CyNode.class,
cyTableManagerServiceRef,cyNetworkTableManagerServiceRef,cyServiceRegistrarServiceRef,compilerServiceRef,cyNetworkManagerServiceRef,deleteTableTaskFactoryService,guiTaskManagerServiceRef,popupMenuHelper,cyApplicationManagerServiceRef,
cyEventHelperServiceRef);//, mapGlobalTableTaskFactoryServiceRef);
+ AbstractTableBrowser edgeTableBrowser = new
DefaultTableBrowser("Edge Attributes", CyEdge.class,
cyTableManagerServiceRef,cyNetworkTableManagerServiceRef,cyServiceRegistrarServiceRef,compilerServiceRef,cyNetworkManagerServiceRef,deleteTableTaskFactoryService,guiTaskManagerServiceRef,popupMenuHelper,cyApplicationManagerServiceRef,
cyEventHelperServiceRef);//, mapGlobalTableTaskFactoryServiceRef);
+ AbstractTableBrowser networkTableBrowser = new
DefaultTableBrowser("Network Attributes", CyNetwork.class,
cyTableManagerServiceRef,cyNetworkTableManagerServiceRef,cyServiceRegistrarServiceRef,compilerServiceRef,cyNetworkManagerServiceRef,deleteTableTaskFactoryService,guiTaskManagerServiceRef,popupMenuHelper,cyApplicationManagerServiceRef,
cyEventHelperServiceRef);//, mapGlobalTableTaskFactoryServiceRef);
- AbstractTableBrowser globalTableBrowser = new
GlobalTableBrowser("Unassigned Tables",
cyTableManagerServiceRef,cyNetworkTableManagerServiceRef,cyServiceRegistrarServiceRef,compilerServiceRef,openBrowserServiceRef,cyNetworkManagerServiceRef,deleteTableTaskFactoryService,guiTaskManagerServiceRef,popupMenuHelper,cyApplicationManagerServiceRef,
cyEventHelperServiceRef);
-
+ AbstractTableBrowser globalTableBrowser = new
GlobalTableBrowser("Unassigned Tables",
cyTableManagerServiceRef,cyNetworkTableManagerServiceRef,cyServiceRegistrarServiceRef,compilerServiceRef,cyNetworkManagerServiceRef,deleteTableTaskFactoryService,guiTaskManagerServiceRef,popupMenuHelper,cyApplicationManagerServiceRef,
cyEventHelperServiceRef);
registerAllServices(bc,nodeTableBrowser, new Properties());
registerAllServices(bc,edgeTableBrowser, new Properties());
Modified:
core3/impl/trunk/table-browser-impl/src/main/java/org/cytoscape/browser/internal/DefaultTableBrowser.java
===================================================================
---
core3/impl/trunk/table-browser-impl/src/main/java/org/cytoscape/browser/internal/DefaultTableBrowser.java
2012-07-30 19:08:34 UTC (rev 30037)
+++
core3/impl/trunk/table-browser-impl/src/main/java/org/cytoscape/browser/internal/DefaultTableBrowser.java
2012-07-30 20:49:24 UTC (rev 30038)
@@ -2,7 +2,6 @@
import java.awt.BorderLayout;
import java.awt.Component;
-import java.awt.Font;
import java.awt.Insets;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
@@ -15,9 +14,7 @@
import javax.swing.JComboBox;
import javax.swing.JLabel;
import javax.swing.JList;
-import javax.swing.JMenuItem;
import javax.swing.JPopupMenu;
-import javax.swing.JToggleButton;
import javax.swing.ListCellRenderer;
import javax.swing.SwingUtilities;
@@ -42,7 +39,6 @@
import org.cytoscape.model.events.TableAboutToBeDeletedListener;
import org.cytoscape.service.util.CyServiceRegistrar;
import org.cytoscape.task.destroy.DeleteTableTaskFactory;
-import org.cytoscape.util.swing.OpenBrowser;
import org.cytoscape.work.swing.DialogTaskManager;
@@ -66,14 +62,13 @@
final
CyNetworkTableManager networkTableManager,
final
CyServiceRegistrar serviceRegistrar,
final
EquationCompiler compiler,
- final OpenBrowser
openBrowser,
final
CyNetworkManager networkManager,
final
DeleteTableTaskFactory deleteTableTaskFactory,
final
DialogTaskManager guiTaskManager,
final
PopupMenuHelper popupMenuHelper,
final
CyApplicationManager applicationManager,
final CyEventHelper
eventHelper) {//, final MapGlobalToLocalTableTaskFactory
mapGlobalTableTaskFactoryService) {
- super(tabTitle, tableManager, networkTableManager,
serviceRegistrar, compiler, openBrowser, networkManager,
+ super(tabTitle, tableManager, networkTableManager,
serviceRegistrar, compiler, networkManager,
deleteTableTaskFactory, guiTaskManager,
popupMenuHelper, applicationManager, eventHelper);
this.objType = objType;
Modified:
core3/impl/trunk/table-browser-impl/src/main/java/org/cytoscape/browser/internal/GlobalTableBrowser.java
===================================================================
---
core3/impl/trunk/table-browser-impl/src/main/java/org/cytoscape/browser/internal/GlobalTableBrowser.java
2012-07-30 19:08:34 UTC (rev 30037)
+++
core3/impl/trunk/table-browser-impl/src/main/java/org/cytoscape/browser/internal/GlobalTableBrowser.java
2012-07-30 20:49:24 UTC (rev 30038)
@@ -23,8 +23,6 @@
import org.cytoscape.model.events.TablePrivacyChangedListener;
import org.cytoscape.service.util.CyServiceRegistrar;
import org.cytoscape.task.destroy.DeleteTableTaskFactory;
-import org.cytoscape.task.edit.MapGlobalToLocalTableTaskFactory;
-import org.cytoscape.util.swing.OpenBrowser;
import org.cytoscape.work.swing.DialogTaskManager;
public class GlobalTableBrowser extends AbstractTableBrowser implements
TableAboutToBeDeletedListener, TableAddedListener, TablePrivacyChangedListener {
@@ -39,11 +37,11 @@
private final TableChooser tableChooser;
public GlobalTableBrowser(String tabTitle, CyTableManager tableManager,
CyNetworkTableManager networkTableManager,
- CyServiceRegistrar serviceRegistrar, EquationCompiler
compiler, OpenBrowser openBrowser,
+ CyServiceRegistrar serviceRegistrar, EquationCompiler
compiler,
CyNetworkManager networkManager, DeleteTableTaskFactory
deleteTableTaskFactoryService,
DialogTaskManager guiTaskManagerServiceRef,
PopupMenuHelper popupMenuHelper,
CyApplicationManager applicationManager, CyEventHelper
eventHelper){//, final MapGlobalToLocalTableTaskFactory
mapGlobalTableTaskFactoryService) {
- super(tabTitle, tableManager, networkTableManager,
serviceRegistrar, compiler, openBrowser, networkManager,
+ super(tabTitle, tableManager, networkTableManager,
serviceRegistrar, compiler, networkManager,
deleteTableTaskFactoryService,
guiTaskManagerServiceRef, popupMenuHelper, applicationManager, eventHelper);
tableChooser = new TableChooser();
Modified:
core3/impl/trunk/table-browser-impl/src/main/java/org/cytoscape/browser/internal/PopupMenuHelper.java
===================================================================
---
core3/impl/trunk/table-browser-impl/src/main/java/org/cytoscape/browser/internal/PopupMenuHelper.java
2012-07-30 19:08:34 UTC (rev 30037)
+++
core3/impl/trunk/table-browser-impl/src/main/java/org/cytoscape/browser/internal/PopupMenuHelper.java
2012-07-30 20:49:24 UTC (rev 30038)
@@ -24,49 +24,52 @@
You should have received a copy of the GNU Lesser General Public License
along with this library; if not, write to the Free Software Foundation,
Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
-*/
+ */
package org.cytoscape.browser.internal;
-
import java.awt.Component;
import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
import java.util.HashMap;
import java.util.Map;
import javax.swing.AbstractAction;
import javax.swing.JMenuItem;
import javax.swing.JPopupMenu;
+import javax.swing.JSeparator;
import org.cytoscape.model.CyColumn;
import org.cytoscape.task.TableCellTaskFactory;
import org.cytoscape.task.TableColumnTaskFactory;
import org.cytoscape.util.swing.GravityTracker;
+import org.cytoscape.util.swing.OpenBrowser;
import org.cytoscape.util.swing.PopupMenuGravityTracker;
import org.cytoscape.work.TaskFactory;
import org.cytoscape.work.TaskManager;
-
/**
- * A class that encapsulates the creation of JPopupMenus based
- * on TaskFactory services.
+ * A class that encapsulates the creation of JPopupMenus based on TaskFactory
+ * services.
*/
public class PopupMenuHelper {
- private final TaskManager taskManager;
+
+ private final TaskManager<?, ?> taskManager;
private final Map<TableCellTaskFactory, Map> tableCellFactoryMap;
private final Map<TableColumnTaskFactory, Map> tableColumnFactoryMap;
private final StaticTaskFactoryProvisioner factoryProvisioner;
+
+ private final OpenBrowser openBrowser;
- public PopupMenuHelper(final TaskManager taskManager) {
+ public PopupMenuHelper(final TaskManager<?, ?> taskManager, final
OpenBrowser openBrowser) {
this.taskManager = taskManager;
-
- tableCellFactoryMap = new HashMap<TableCellTaskFactory,
Map>();
+ this.openBrowser = openBrowser;
+
+ tableCellFactoryMap = new HashMap<TableCellTaskFactory, Map>();
tableColumnFactoryMap = new HashMap<TableColumnTaskFactory,
Map>();
factoryProvisioner = new StaticTaskFactoryProvisioner();
}
- public void createColumnHeaderMenu(final CyColumn column, final
Component invoker, final int x,
- final int y)
- {
+ public void createColumnHeaderMenu(final CyColumn column, final
Component invoker, final int x, final int y) {
if (tableColumnFactoryMap.isEmpty())
return;
@@ -82,13 +85,17 @@
menu.show(invoker, x, y);
}
- public void createTableCellMenu(final CyColumn column, final Object
primaryKeyValue,
- final Component invoker, final int x, final
int y)
- {
+ public void createTableCellMenu(final CyColumn column, final Object
primaryKeyValue, final Component invoker,
+ final int x, final int y) {
if (tableCellFactoryMap.isEmpty())
return;
final JPopupMenu menu = new JPopupMenu();
+
+ // Add preset menue items
+ final Object value =
column.getTable().getRow(primaryKeyValue).get(column.getName(),
column.getType());
+ menu.add(getOpenLinkMenu(value.toString()));
+
final PopupMenuGravityTracker tracker = new
PopupMenuGravityTracker(menu);
for (final Map.Entry<TableCellTaskFactory, Map> mapEntry :
tableCellFactoryMap.entrySet()) {
@@ -102,42 +109,31 @@
/**
* This method creates popup menu submenus and menu items based on the
- * "title" and "preferredMenu" keywords, depending on which are present
- * in the service properties.
+ * "title" and "preferredMenu" keywords, depending on which are present
in
+ * the service properties.
*/
- private void createMenuItem(final TaskFactory tf, final
PopupMenuGravityTracker tracker,
- final Map props)
- {
- String menuLabel = (String)(props.get("title"));
+ private void createMenuItem(final TaskFactory tf, final
PopupMenuGravityTracker tracker, final Map props) {
+ String menuLabel = (String) (props.get("title"));
if (menuLabel == null)
menuLabel = "Unidentified Task: " +
Integer.toString(tf.hashCode());
if (tf.isReady())
- tracker.addMenuItem(new JMenuItem(new PopupAction(tf,
menuLabel)),
- GravityTracker.USE_ALPHABETIC_ORDER);
+ tracker.addMenuItem(new JMenuItem(new PopupAction(tf,
menuLabel)), GravityTracker.USE_ALPHABETIC_ORDER);
}
- public void addTableColumnTaskFactory(final TableColumnTaskFactory
newFactory,
- final Map properties)
- {
+ public void addTableColumnTaskFactory(final TableColumnTaskFactory
newFactory, final Map properties) {
tableColumnFactoryMap.put(newFactory, properties);
}
- public void removeTableColumnTaskFactory(final TableColumnTaskFactory
factory,
- final Map properties)
- {
+ public void removeTableColumnTaskFactory(final TableColumnTaskFactory
factory, final Map properties) {
tableColumnFactoryMap.remove(factory);
}
- public void addTableCellTaskFactory(final TableCellTaskFactory
newFactory,
- final Map properties)
- {
+ public void addTableCellTaskFactory(final TableCellTaskFactory
newFactory, final Map properties) {
tableCellFactoryMap.put(newFactory, properties);
}
- public void removeTableCellTaskFactory(final TableCellTaskFactory
factory,
- final Map properties)
- {
+ public void removeTableCellTaskFactory(final TableCellTaskFactory
factory, final Map properties) {
tableCellFactoryMap.remove(factory);
}
@@ -145,6 +141,9 @@
* A simple action that executes the specified TaskFactory
*/
private class PopupAction extends AbstractAction {
+
+ private static final long serialVersionUID =
-2841342029789163004L;
+
private final TaskFactory tf;
PopupAction(final TaskFactory tf, final String menuLabel) {
@@ -156,4 +155,21 @@
taskManager.execute(tf.createTaskIterator());
}
}
+
+ // Preset menu item: open browser
+ protected JMenuItem getOpenLinkMenu(final Object urlString) {
+ final JMenuItem openLinkItem = new JMenuItem();
+ openLinkItem.setText("Open URL in web browser...");
+ if (urlString == null ||
urlString.toString().startsWith("http:") == false) {
+ openLinkItem.setEnabled(false);
+ } else {
+ openLinkItem.addActionListener(new ActionListener() {
+ public void actionPerformed(ActionEvent e) {
+
openBrowser.openURL(urlString.toString());
+ }
+ });
+ }
+
+ return openLinkItem;
+ }
}
--
You received this message because you are subscribed to the Google Groups
"cytoscape-cvs" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit this group at
http://groups.google.com/group/cytoscape-cvs?hl=en.