Author: mes
Date: 2009-11-30 10:50:02 -0800 (Mon, 30 Nov 2009)
New Revision: 18601
Added:
coreplugins/trunk/browser/src/browser/ui/BrowserTableCellRenderer.java
Modified:
coreplugins/trunk/browser/src/browser/ui/CyAttributeBrowserTable.java
Log:
minor cleanup for browser cell editing
Added: coreplugins/trunk/browser/src/browser/ui/BrowserTableCellRenderer.java
===================================================================
--- coreplugins/trunk/browser/src/browser/ui/BrowserTableCellRenderer.java
(rev 0)
+++ coreplugins/trunk/browser/src/browser/ui/BrowserTableCellRenderer.java
2009-11-30 18:50:02 UTC (rev 18601)
@@ -0,0 +1,288 @@
+/*
+ * $Archive: SourceJammer$
+ * $FileName: JSortTable.java$
+ * $FileID: 3984$
+ *
+ * Last change:
+ * $AuthorName: Timo Haberkern$
+ * $Date: 2007-07-11 17:47:31 -0700 (水, 11 7 2007) $
+ * $Comment: $
+ *
+ * $KeyWordsOff: $
+ */
+
+/*
+ =====================================================================
+
+ JSortTable.java
+
+ Created by Claude Duguay
+ Copyright (c) 2002
+
+ =====================================================================
+ */
+package browser.ui;
+
+import static browser.DataObjectType.EDGES;
+import static browser.DataObjectType.NETWORK;
+import static browser.DataObjectType.NODES;
+import giny.model.Edge;
+import giny.model.GraphObject;
+import giny.model.Node;
+import giny.view.EdgeView;
+import giny.view.NodeView;
+
+import java.awt.Color;
+import java.awt.Component;
+import java.awt.Cursor;
+import java.awt.Font;
+import java.awt.Toolkit;
+import java.awt.datatransfer.Clipboard;
+import java.awt.datatransfer.StringSelection;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.awt.event.KeyEvent;
+import java.awt.event.MouseAdapter;
+import java.awt.event.MouseEvent;
+import java.awt.event.MouseListener;
+import java.awt.event.MouseMotionListener;
+import java.beans.PropertyChangeEvent;
+import java.beans.PropertyChangeListener;
+import java.io.BufferedWriter;
+import java.io.File;
+import java.io.FileWriter;
+import java.io.IOException;
+import java.net.MalformedURLException;
+import java.net.URL;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Properties;
+import java.util.Map.Entry;
+
+import javax.swing.BorderFactory;
+import javax.swing.JCheckBoxMenuItem;
+import javax.swing.JComponent;
+import javax.swing.JLabel;
+import javax.swing.JMenu;
+import javax.swing.JMenuItem;
+import javax.swing.JOptionPane;
+import javax.swing.JPopupMenu;
+import javax.swing.JTable;
+import javax.swing.KeyStroke;
+import javax.swing.ListSelectionModel;
+import javax.swing.SwingUtilities;
+import javax.swing.border.Border;
+import javax.swing.event.ChangeEvent;
+import javax.swing.table.JTableHeader;
+import javax.swing.table.TableCellRenderer;
+
+import browser.AttributeBrowser;
+import browser.AttributeBrowserPlugin;
+import browser.DataObjectType;
+import browser.DataTableModel;
+import browser.SortTableModel;
+import browser.util.HyperLinkOut;
+import cytoscape.CyNetwork;
+import cytoscape.Cytoscape;
+import cytoscape.CytoscapeInit;
+import cytoscape.data.CyAttributes;
+import cytoscape.data.SelectEvent;
+import cytoscape.data.SelectEventListener;
+import cytoscape.data.Semantics;
+import cytoscape.dialogs.NetworkMetaDataDialog;
+import cytoscape.logger.CyLogger;
+import cytoscape.util.CyFileFilter;
+import cytoscape.util.FileUtil;
+import cytoscape.util.OpenBrowser;
+import cytoscape.util.swing.ColumnResizer;
+import cytoscape.view.CyNetworkView;
+import cytoscape.view.CytoscapeDesktop;
+import cytoscape.visual.GlobalAppearanceCalculator;
+import cytoscape.visual.VisualMappingManager;
+
+import java.awt.*;
+import java.awt.event.*;
+import java.beans.*;
+import java.util.EventObject;
+import javax.swing.*;
+import javax.swing.JTable;
+import javax.swing.event.DocumentEvent;
+import javax.swing.event.DocumentListener;
+import javax.swing.table.*;
+import javax.swing.table.TableCellEditor;
+import javax.swing.table.TableColumn;
+
+/**
+ *
+ * Cell renderer for preview table.<br>
+ * Coloring function is added. This will sync node color and cell colors.<br>
+ *
+ * @version 0.6
+ * @since Cytoscape 2.3
+ *
+ * @author kono
+ *
+ */
+class BrowserTableCellRenderer extends JLabel implements TableCellRenderer {
+ private static final String HTML_BEG = "<html><body topmargin=\"5\"
leftmargin=\"0\" marginheight=\"5\" marginwidth=\"5\" "
+ + "bgcolor=\"#ffffff\"
text=\"#595959\" link=\"#0000ff\" vlink=\"#800080\" alink=\"#ff0000\">";
+ private static final String HTML_STYLE = "<div style=\"width: 200px;
background-color: #ffffff; padding: 3px;\"> ";
+
+ // Define fonts & colors for the cells
+ private Font labelFont = new Font("Sans-serif", Font.BOLD, 12);
+ private Font normalFont = new Font("Sans-serif", Font.PLAIN, 12);
+ private final Color metadataBackground = new Color(255, 210, 255);
+ private static final Color NON_EDITABLE_COLOR = new Color(235, 235,
235, 100);
+ private static final Color SELECTED_CELL_COLOR = new Color(0, 100, 255,
40);
+ private static final Color SELECTED_LABEL_COLOR =
Color.black.brighter();
+ private DataObjectType type = DataObjectType.NODES;
+ private boolean coloring;
+ private Object vl;
+
+ /**
+ * Creates a new BrowserTableCellRenderer object.
+ *
+ * @param coloring DOCUMENT ME!
+ * @param type DOCUMENT ME!
+ */
+ public BrowserTableCellRenderer(boolean coloring, DataObjectType type) {
+ super();
+ this.type = type;
+ this.coloring = coloring;
+ setOpaque(true);
+ setBorder(BorderFactory.createEmptyBorder(0, 5, 0, 5));
+ }
+
+ /**
+ * DOCUMENT ME!
+ *
+ * @param table DOCUMENT ME!
+ * @param value DOCUMENT ME!
+ * @param isSelected DOCUMENT ME!
+ * @param hasFocus DOCUMENT ME!
+ * @param row DOCUMENT ME!
+ * @param column DOCUMENT ME!
+ *
+ * @return DOCUMENT ME!
+ */
+ public Component getTableCellRendererComponent(JTable table, Object
value, boolean isSelected,
+ boolean hasFocus, int
row, int column) {
+ vl = value;
+
+ final String colName = table.getColumnName(column);
+
+ // First, set values
+ setHorizontalAlignment(JLabel.LEFT);
+ setText((value == null) ? "" : value.toString());
+
+ if (value != null) {
+ // Set HTML style tooltip
+ setToolTipText(getFormattedToolTipText(colName, value));
+ } else {
+ setToolTipText(null);
+ }
+
+ // If selected, return
+ if (isSelected) {
+ setFont(labelFont);
+ setForeground(SELECTED_LABEL_COLOR);
+ setBackground(SELECTED_CELL_COLOR);
+
+ return this;
+ }
+
+ // set default colorings
+ setForeground(table.getForeground());
+ setFont(normalFont);
+ setBackground(table.getBackground());
+
+ final CyAttributes data = type.getAssociatedAttribute();
+
+ if (data == null)
+ return this;
+
+ // check for non-editable columns
+ if (data.getUserEditable(colName) == false) {
+ setBackground(NON_EDITABLE_COLOR);
+ }
+
+ // If ID, return default.
+ if (colName.equals(AttributeBrowser.ID)) {
+ setFont(labelFont);
+ setBackground(NON_EDITABLE_COLOR);
+ }
+
+ // handle special NETWORK coloring
+ if ((type == NETWORK) && (value != null)) {
+ if (colName.equals("Network Attribute Name") &&
!value.equals("Network Metadata")) {
+ setFont(labelFont);
+ setBackground(NON_EDITABLE_COLOR);
+ } else if (value.equals("Network Metadata")) {
+ setBackground(metadataBackground);
+ setFont(labelFont);
+ }
+ }
+
+ // if we're not coloring the ID column we're done
+ if ((coloring == false) || !colName.equals(AttributeBrowser.ID))
+ return this;
+
+ // handle colors for the the ID column
+ CyNetworkView netview = Cytoscape.getCurrentNetworkView();
+
+ if (type == NODES) {
+ if (netview != Cytoscape.getNullNetworkView()) {
+ NodeView nodeView =
netview.getNodeView(Cytoscape.getCyNode((String) table.getValueAt(row,
column)));
+
+ if (nodeView != null) {
+ Color nodeColor = (Color)
nodeView.getUnselectedPaint();
+ setBackground(nodeColor);
+ }
+ }
+ } else if (type == EDGES) {
+ if (netview != Cytoscape.getNullNetworkView()) {
+ final String edgeName = (String)
table.getValueAt(row, column);
+ final EdgeView edgeView =
netview.getEdgeView(((CyAttributeBrowserTable) table).getEdge(edgeName));
+
+ if (edgeView != null) {
+ Color edgeColor = (Color)
edgeView.getUnselectedPaint();
+ setBackground(edgeColor);
+ }
+ }
+ }
+
+ return this;
+ }
+
+ /**
+ * Returns organized & readable tooltip text.
+ * @param value
+ * @return
+ */
+ private String getFormattedToolTipText(final String colName, final
Object value) {
+ StringBuilder html = new StringBuilder();
+
+ html.append(HTML_BEG + "<strong text=\"#4169E1\" >" + colName +
"</strong><br><hr>"
+ + HTML_STYLE);
+
+ if ((value instanceof List == false) && (value instanceof Map
== false)) {
+ html.append(value.toString());
+ } else if (value instanceof List) {
+ html.append("<ul leftmargin=\"0\">");
+
+ for (Object item : (List<Object>) value) {
+ html.append("<li type=\"square\">" +
item.toString() + "</li>");
+ }
+
+ html.append("</ul>");
+ }
+
+ html.append("</div></body></html>");
+
+ return html.toString();
+ }
+}
+
+
Modified: coreplugins/trunk/browser/src/browser/ui/CyAttributeBrowserTable.java
===================================================================
--- coreplugins/trunk/browser/src/browser/ui/CyAttributeBrowserTable.java
2009-11-27 18:03:03 UTC (rev 18600)
+++ coreplugins/trunk/browser/src/browser/ui/CyAttributeBrowserTable.java
2009-11-30 18:50:02 UTC (rev 18601)
@@ -653,6 +653,14 @@
public void mouseClicked(MouseEvent e) {
final int column =
getColumnModel().getColumnIndexAtX(e.getX());
final int row = e.getY() /
getRowHeight();
+
+ // Make sure the column and row we're
clicking on
+ // actually exists!
+ if ( column >=
tableModel.getColumnCount() ||
+ row >= tableModel.getRowCount() ) {
+ return;
+ }
+
final Object value = getValueAt(row,
column);
getSelected();
@@ -1208,16 +1216,9 @@
}
-
- /**
- * DOCUMENT ME!
- *
- * @param row DOCUMENT ME!
- * @param column DOCUMENT ME!
- * @param e DOCUMENT ME!
- *
- * @return DOCUMENT ME!
- */
+ //
=========================================================================================
+ // BEGIN special cell editing code...
+ //
public boolean editCellAt(int row, int column, EventObject e) {
if ((cellEditor != null) && !cellEditor.stopCellEditing()) {
return false;
@@ -1286,9 +1287,6 @@
}
}
- /**
- * DOCUMENT ME!
- */
public void removeNotify() {
KeyboardFocusManager.getCurrentKeyboardFocusManager()
.removePropertyChangeListener("permanentFocusOwner", editorRemover);
@@ -1296,9 +1294,6 @@
super.removeNotify();
}
- /**
- * DOCUMENT ME!
- */
public void removeEditor() {
KeyboardFocusManager.getCurrentKeyboardFocusManager()
.removePropertyChangeListener("permanentFocusOwner", editorRemover);
@@ -1324,11 +1319,6 @@
}
}
- /**
- * DOCUMENT ME!
- *
- * @return DOCUMENT ME!
- */
public boolean getScrollableTracksViewportHeight() {
if (getParent() instanceof JViewport)
return getParent().getHeight() >
getPreferredSize().height;
@@ -1370,189 +1360,8 @@
}
}
}
-
-// public void tableChanged(TableModelEvent tme) {
-// if ( tme.getType() == TableModelEvent.INSERT ||
-// tme.getType() == TableModelEvent.DELETE )
-// for (String colName : orderedColumn ) {
-// System.out.println("setting cell editor for col: " +
colName);
-// TableColumn col = attributeTable.getColumn(colName);
-// col.setCellEditor(new MultiLineTableCellEditor());
-// }
-// }
-
+ //
+ // END special cell editing code...
+ //
=========================================================================================
}
-
-/**
- *
- * Cell renderer for preview table.<br>
- * Coloring function is added. This will sync node color and cell colors.<br>
- *
- * @version 0.6
- * @since Cytoscape 2.3
- *
- * @author kono
- *
- */
-class BrowserTableCellRenderer extends JLabel implements TableCellRenderer {
- private static final String HTML_BEG = "<html><body topmargin=\"5\"
leftmargin=\"0\" marginheight=\"5\" marginwidth=\"5\" "
- + "bgcolor=\"#ffffff\"
text=\"#595959\" link=\"#0000ff\" vlink=\"#800080\" alink=\"#ff0000\">";
- private static final String HTML_STYLE = "<div style=\"width: 200px;
background-color: #ffffff; padding: 3px;\"> ";
-
- // Define fonts & colors for the cells
- private Font labelFont = new Font("Sans-serif", Font.BOLD, 12);
- private Font normalFont = new Font("Sans-serif", Font.PLAIN, 12);
- private final Color metadataBackground = new Color(255, 210, 255);
- private static final Color NON_EDITABLE_COLOR = new Color(235, 235,
235, 100);
- private static final Color SELECTED_CELL_COLOR = new Color(0, 100, 255,
40);
- private static final Color SELECTED_LABEL_COLOR =
Color.black.brighter();
- private DataObjectType type = DataObjectType.NODES;
- private boolean coloring;
- private Object vl;
-
- /**
- * Creates a new BrowserTableCellRenderer object.
- *
- * @param coloring DOCUMENT ME!
- * @param type DOCUMENT ME!
- */
- public BrowserTableCellRenderer(boolean coloring, DataObjectType type) {
- super();
- this.type = type;
- this.coloring = coloring;
- setOpaque(true);
- setBorder(BorderFactory.createEmptyBorder(0, 5, 0, 5));
- }
-
- /**
- * DOCUMENT ME!
- *
- * @param table DOCUMENT ME!
- * @param value DOCUMENT ME!
- * @param isSelected DOCUMENT ME!
- * @param hasFocus DOCUMENT ME!
- * @param row DOCUMENT ME!
- * @param column DOCUMENT ME!
- *
- * @return DOCUMENT ME!
- */
- public Component getTableCellRendererComponent(JTable table, Object
value, boolean isSelected,
- boolean hasFocus, int
row, int column) {
- vl = value;
-
- final String colName = table.getColumnName(column);
-
- // First, set values
- setHorizontalAlignment(JLabel.LEFT);
- setText((value == null) ? "" : value.toString());
-
- if (value != null) {
- // Set HTML style tooltip
- setToolTipText(getFormattedToolTipText(colName, value));
- } else {
- setToolTipText(null);
- }
-
- // If selected, return
- if (isSelected) {
- setFont(labelFont);
- setForeground(SELECTED_LABEL_COLOR);
- setBackground(SELECTED_CELL_COLOR);
-
- return this;
- }
-
- // set default colorings
- setForeground(table.getForeground());
- setFont(normalFont);
- setBackground(table.getBackground());
-
- final CyAttributes data = type.getAssociatedAttribute();
-
- if (data == null)
- return this;
-
- // check for non-editable columns
- if (data.getUserEditable(colName) == false) {
- setBackground(NON_EDITABLE_COLOR);
- }
-
- // If ID, return default.
- if (colName.equals(AttributeBrowser.ID)) {
- setFont(labelFont);
- setBackground(NON_EDITABLE_COLOR);
- }
-
- // handle special NETWORK coloring
- if ((type == NETWORK) && (value != null)) {
- if (colName.equals("Network Attribute Name") &&
!value.equals("Network Metadata")) {
- setFont(labelFont);
- setBackground(NON_EDITABLE_COLOR);
- } else if (value.equals("Network Metadata")) {
- setBackground(metadataBackground);
- setFont(labelFont);
- }
- }
-
- // if we're not coloring the ID column we're done
- if ((coloring == false) || !colName.equals(AttributeBrowser.ID))
- return this;
-
- // handle colors for the the ID column
- CyNetworkView netview = Cytoscape.getCurrentNetworkView();
-
- if (type == NODES) {
- if (netview != Cytoscape.getNullNetworkView()) {
- NodeView nodeView =
netview.getNodeView(Cytoscape.getCyNode((String) table.getValueAt(row,
column)));
-
- if (nodeView != null) {
- Color nodeColor = (Color)
nodeView.getUnselectedPaint();
- setBackground(nodeColor);
- }
- }
- } else if (type == EDGES) {
- if (netview != Cytoscape.getNullNetworkView()) {
- final String edgeName = (String)
table.getValueAt(row, column);
- final EdgeView edgeView =
netview.getEdgeView(((CyAttributeBrowserTable) table).getEdge(edgeName));
-
- if (edgeView != null) {
- Color edgeColor = (Color)
edgeView.getUnselectedPaint();
- setBackground(edgeColor);
- }
- }
- }
-
- return this;
- }
-
- /**
- * Returns organized & readable tooltip text.
- * @param value
- * @return
- */
- private String getFormattedToolTipText(final String colName, final
Object value) {
- StringBuilder html = new StringBuilder();
-
- html.append(HTML_BEG + "<strong text=\"#4169E1\" >" + colName +
"</strong><br><hr>"
- + HTML_STYLE);
-
- if ((value instanceof List == false) && (value instanceof Map
== false)) {
- html.append(value.toString());
- } else if (value instanceof List) {
- html.append("<ul leftmargin=\"0\">");
-
- for (Object item : (List<Object>) value) {
- html.append("<li type=\"square\">" +
item.toString() + "</li>");
- }
-
- html.append("</ul>");
- }
-
- html.append("</div></body></html>");
-
- return html.toString();
- }
-}
-
-
--
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.