]> gerrit.simantics Code Review - simantics/platform.git/blobdiff - bundles/org.simantics.spreadsheet.ui/src/org/simantics/spreadsheet/ui/test/RowHeaderExample.java
Fixed all line endings of the repository
[simantics/platform.git] / bundles / org.simantics.spreadsheet.ui / src / org / simantics / spreadsheet / ui / test / RowHeaderExample.java
index b014dfea1b45086a69ec0b793ceb79e38ed23b54..e4062813baf84f7f143c998d8650ea1ac9766179 100644 (file)
-/*******************************************************************************\r
- * Copyright (c) 2007, 2010 Association for Decentralized Information Management\r
- * in Industry THTH ry.\r
- * All rights reserved. This program and the accompanying materials\r
- * are made available under the terms of the Eclipse Public License v1.0\r
- * which accompanies this distribution, and is available at\r
- * http://www.eclipse.org/legal/epl-v10.html\r
- *\r
- * Contributors:\r
- *     VTT Technical Research Centre of Finland - initial API and implementation\r
- *******************************************************************************/\r
-package org.simantics.spreadsheet.ui.test;\r
-import java.awt.BorderLayout;\r
-import java.awt.Component;\r
-import java.awt.Toolkit;\r
-import java.awt.datatransfer.Clipboard;\r
-import java.awt.datatransfer.DataFlavor;\r
-import java.awt.datatransfer.StringSelection;\r
-import java.awt.event.ActionEvent;\r
-import java.awt.event.ActionListener;\r
-import java.awt.event.KeyEvent;\r
-import java.awt.event.WindowAdapter;\r
-import java.awt.event.WindowEvent;\r
-import java.util.StringTokenizer;\r
-\r
-import javax.swing.AbstractListModel;\r
-import javax.swing.JComponent;\r
-import javax.swing.JFrame;\r
-import javax.swing.JLabel;\r
-import javax.swing.JList;\r
-import javax.swing.JOptionPane;\r
-import javax.swing.JScrollPane;\r
-import javax.swing.JTable;\r
-import javax.swing.KeyStroke;\r
-import javax.swing.ListCellRenderer;\r
-import javax.swing.ListModel;\r
-import javax.swing.UIManager;\r
-import javax.swing.event.TableModelEvent;\r
-import javax.swing.event.TableModelListener;\r
-import javax.swing.table.DefaultTableModel;\r
-import javax.swing.table.JTableHeader;\r
-\r
-/**\r
- * @version 1.0 11/09/98\r
- */\r
-\r
-class RowHeaderRenderer extends JLabel implements ListCellRenderer {\r
-\r
-       RowHeaderRenderer(JTable table) {\r
-               JTableHeader header = table.getTableHeader();\r
-               setOpaque(true);\r
-               setBorder(UIManager.getBorder("TableHeader.cellBorder"));\r
-               setHorizontalAlignment(CENTER);\r
-               setForeground(header.getForeground());\r
-               setBackground(header.getBackground());\r
-               setFont(header.getFont());\r
-       }\r
-\r
-       public Component getListCellRendererComponent(JList list, Object value,\r
-                       int index, boolean isSelected, boolean cellHasFocus) {\r
-               setText((value == null) ? "" : value.toString());\r
-               return this;\r
-       }\r
-}\r
-\r
-public class RowHeaderExample extends JFrame {\r
-\r
-       public RowHeaderExample() {\r
-\r
-               super("Row Header Example");\r
-               setSize(300, 150);\r
-\r
-               ListModel lm = new AbstractListModel() {\r
-\r
-                       public int getSize() {\r
-                               return 500;\r
-                       }\r
-\r
-                       public Object getElementAt(int index) {\r
-                               return "" + index;\r
-                       }\r
-\r
-               };\r
-\r
-               final DefaultTableModel dm = new DefaultTableModel(lm.getSize(), 500);\r
-               for(int i=0;i<10;i++) {\r
-                       for(int j=0;j<10;j++) {\r
-                               dm.setValueAt(new Object () { private Integer i = new Integer((int)(20 *Math.random())); } , i, j);\r
-                       }\r
-               }\r
-\r
-               dm.addTableModelListener(new TableModelListener() {\r
-\r
-                       @Override\r
-                       public void tableChanged(TableModelEvent e) {\r
-//                             System.out.println(e);\r
-//                             System.out.println(e.getColumn());\r
-//                             System.out.println(e.getFirstRow());\r
-//                             System.out.println(e.getLastRow());\r
-//                             System.out.println(e.getSource());\r
-//                             Object value = dm.getValueAt(e.getFirstRow(), e.getColumn());\r
-//                             System.out.println(value);\r
-//                             System.out.println(value.getClass());\r
-//                             Object value2 = dm.getValueAt(e.getFirstRow(), e.getColumn() + 1);\r
-//                             System.out.println(value2);\r
-//                             System.out.println(value2.getClass());\r
-                       }\r
-\r
-               });\r
-\r
-               JTable table = new JTable(dm);\r
-               new ExcelAdapter(table);\r
-               table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);\r
-\r
-               table.setColumnSelectionAllowed(true);\r
-               table.addRowSelectionInterval(1, 3);\r
-               table.addColumnSelectionInterval(1, 3);\r
-\r
-               JList rowHeader = new JList(lm);\r
-               rowHeader.setFixedCellWidth(50);\r
-\r
-               rowHeader.setFixedCellHeight(table.getRowHeight() /*\r
-        + table.getRowMargin() + table.getIntercellSpacing().height*/);\r
-\r
-               rowHeader.setCellRenderer(new RowHeaderRenderer(table));\r
-\r
-               JScrollPane scroll = new JScrollPane(table);\r
-               scroll.setRowHeaderView(rowHeader);\r
-               getContentPane().add(scroll, BorderLayout.CENTER);\r
-       }\r
-\r
-       /**\r
-        * ExcelAdapter enables Copy-Paste Clipboard functionality on JTables.\r
-        * The clipboard data format used by the adapter is compatible with\r
-        * the clipboard format used by Excel. This provides for clipboard\r
-        * interoperability between enabled JTables and Excel.\r
-        */\r
-       public class ExcelAdapter implements ActionListener\r
-       {\r
-               private String rowstring,value;\r
-               private Clipboard system;\r
-               private StringSelection stsel;\r
-               private JTable jTable1 ;\r
-               /**\r
-                * The Excel Adapter is constructed with a\r
-                * JTable on which it enables Copy-Paste and acts\r
-                * as a Clipboard listener.\r
-                */\r
-               public ExcelAdapter(JTable myJTable)\r
-               {\r
-                       jTable1 = myJTable;\r
-                       KeyStroke copy = KeyStroke.getKeyStroke(KeyEvent.VK_C,ActionEvent.CTRL_MASK,false);\r
-                       // Identifying the copy KeyStroke user can modify this\r
-                       // to copy on some other Key combination.\r
-                       KeyStroke paste = KeyStroke.getKeyStroke(KeyEvent.VK_V,ActionEvent.CTRL_MASK,false);\r
-                       // Identifying the Paste KeyStroke user can modify this\r
-                       //to copy on some other Key combination.\r
-                       jTable1.registerKeyboardAction(this,"Copy",copy,JComponent.WHEN_FOCUSED);\r
-                       jTable1.registerKeyboardAction(this,"Paste",paste,JComponent.WHEN_FOCUSED);\r
-                       system = Toolkit.getDefaultToolkit().getSystemClipboard();\r
-               }\r
-               /**\r
-                * Public Accessor methods for the Table on which this adapter acts.\r
-                */\r
-               public JTable getJTable() {return jTable1;}\r
-               public void setJTable(JTable jTable1) {this.jTable1=jTable1;}\r
-               /**\r
-                * This method is activated on the Keystrokes we are listening to\r
-                * in this implementation. Here it listens for Copy and Paste ActionCommands.\r
-                * Selections comprising non-adjacent cells result in invalid selection and\r
-                * then copy action cannot be performed.\r
-                * Paste is done by aligning the upper left corner of the selection with the\r
-                * 1st element in the current selection of the JTable.\r
-                */\r
-               public void actionPerformed(ActionEvent e)\r
-               {\r
-                       if (e.getActionCommand().compareTo("Copy")==0)\r
-                       {\r
-                               StringBuffer sbf=new StringBuffer();\r
-                               // Check to ensure we have selected only a contiguous block of\r
-                               // cells\r
-                               int numcols=jTable1.getSelectedColumnCount();\r
-                               int numrows=jTable1.getSelectedRowCount();\r
-                               int[] rowsselected=jTable1.getSelectedRows();\r
-                               int[] colsselected=jTable1.getSelectedColumns();\r
-                               if (!((numrows-1==rowsselected[rowsselected.length-1]-rowsselected[0] &&\r
-                                               numrows==rowsselected.length) &&\r
-                                               (numcols-1==colsselected[colsselected.length-1]-colsselected[0] &&\r
-                                                               numcols==colsselected.length)))\r
-                               {\r
-                                       JOptionPane.showMessageDialog(null, "Invalid Copy Selection",\r
-                                                       "Invalid Copy Selection",\r
-                                                       JOptionPane.ERROR_MESSAGE);\r
-                                       return;\r
-                               }\r
-                               for (int i=0;i<numrows;i++)\r
-                               {\r
-                                       for (int j=0;j<numcols;j++)\r
-                                       {\r
-                                               sbf.append(jTable1.getValueAt(rowsselected[i],colsselected[j]));\r
-                                               if (j<numcols-1) sbf.append("\t");\r
-                                       }\r
-                                       sbf.append("\n");\r
-                               }\r
-                               stsel  = new StringSelection(sbf.toString());\r
-                               system = Toolkit.getDefaultToolkit().getSystemClipboard();\r
-                               system.setContents(stsel,stsel);\r
-                       }\r
-                       if (e.getActionCommand().compareTo("Paste")==0)\r
-                       {\r
-                               int startRow=(jTable1.getSelectedRows())[0];\r
-                               int startCol=(jTable1.getSelectedColumns())[0];\r
-                               try\r
-                               {\r
-                                       String trstring= (String)(system.getContents(this).getTransferData(DataFlavor.stringFlavor));\r
-                                       StringTokenizer st1=new StringTokenizer(trstring,"\n");\r
-                                       for(int i=0;st1.hasMoreTokens();i++)\r
-                                       {\r
-                                               rowstring=st1.nextToken();\r
-                                               StringTokenizer st2=new StringTokenizer(rowstring,"\t");\r
-                                               for(int j=0;st2.hasMoreTokens();j++)\r
-                                               {\r
-                                                       value=(String)st2.nextToken();\r
-                                                       if (startRow+i< jTable1.getRowCount()  &&\r
-                                                                       startCol+j< jTable1.getColumnCount())\r
-                                                               jTable1.setValueAt(value,startRow+i,startCol+j);\r
-                                               }\r
-                                       }\r
-                               }\r
-                               catch(Exception ex){ex.printStackTrace();}\r
-                       }\r
-               }\r
-       }\r
-\r
-\r
-       public static void main(String[] args) {\r
-               RowHeaderExample frame = new RowHeaderExample();\r
-               frame.addWindowListener(new WindowAdapter() {\r
-                       public void windowClosing(WindowEvent e) {\r
-                               System.exit(0);\r
-                       }\r
-               });\r
-               frame.setVisible(true);\r
-       }\r
+/*******************************************************************************
+ * Copyright (c) 2007, 2010 Association for Decentralized Information Management
+ * in Industry THTH ry.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     VTT Technical Research Centre of Finland - initial API and implementation
+ *******************************************************************************/
+package org.simantics.spreadsheet.ui.test;
+import java.awt.BorderLayout;
+import java.awt.Component;
+import java.awt.Toolkit;
+import java.awt.datatransfer.Clipboard;
+import java.awt.datatransfer.DataFlavor;
+import java.awt.datatransfer.StringSelection;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.awt.event.KeyEvent;
+import java.awt.event.WindowAdapter;
+import java.awt.event.WindowEvent;
+import java.util.StringTokenizer;
+
+import javax.swing.AbstractListModel;
+import javax.swing.JComponent;
+import javax.swing.JFrame;
+import javax.swing.JLabel;
+import javax.swing.JList;
+import javax.swing.JOptionPane;
+import javax.swing.JScrollPane;
+import javax.swing.JTable;
+import javax.swing.KeyStroke;
+import javax.swing.ListCellRenderer;
+import javax.swing.ListModel;
+import javax.swing.UIManager;
+import javax.swing.event.TableModelEvent;
+import javax.swing.event.TableModelListener;
+import javax.swing.table.DefaultTableModel;
+import javax.swing.table.JTableHeader;
+
+/**
+ * @version 1.0 11/09/98
+ */
+
+class RowHeaderRenderer extends JLabel implements ListCellRenderer {
+
+       RowHeaderRenderer(JTable table) {
+               JTableHeader header = table.getTableHeader();
+               setOpaque(true);
+               setBorder(UIManager.getBorder("TableHeader.cellBorder"));
+               setHorizontalAlignment(CENTER);
+               setForeground(header.getForeground());
+               setBackground(header.getBackground());
+               setFont(header.getFont());
+       }
+
+       public Component getListCellRendererComponent(JList list, Object value,
+                       int index, boolean isSelected, boolean cellHasFocus) {
+               setText((value == null) ? "" : value.toString());
+               return this;
+       }
+}
+
+public class RowHeaderExample extends JFrame {
+
+       public RowHeaderExample() {
+
+               super("Row Header Example");
+               setSize(300, 150);
+
+               ListModel lm = new AbstractListModel() {
+
+                       public int getSize() {
+                               return 500;
+                       }
+
+                       public Object getElementAt(int index) {
+                               return "" + index;
+                       }
+
+               };
+
+               final DefaultTableModel dm = new DefaultTableModel(lm.getSize(), 500);
+               for(int i=0;i<10;i++) {
+                       for(int j=0;j<10;j++) {
+                               dm.setValueAt(new Object () { private Integer i = new Integer((int)(20 *Math.random())); } , i, j);
+                       }
+               }
+
+               dm.addTableModelListener(new TableModelListener() {
+
+                       @Override
+                       public void tableChanged(TableModelEvent e) {
+//                             System.out.println(e);
+//                             System.out.println(e.getColumn());
+//                             System.out.println(e.getFirstRow());
+//                             System.out.println(e.getLastRow());
+//                             System.out.println(e.getSource());
+//                             Object value = dm.getValueAt(e.getFirstRow(), e.getColumn());
+//                             System.out.println(value);
+//                             System.out.println(value.getClass());
+//                             Object value2 = dm.getValueAt(e.getFirstRow(), e.getColumn() + 1);
+//                             System.out.println(value2);
+//                             System.out.println(value2.getClass());
+                       }
+
+               });
+
+               JTable table = new JTable(dm);
+               new ExcelAdapter(table);
+               table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
+
+               table.setColumnSelectionAllowed(true);
+               table.addRowSelectionInterval(1, 3);
+               table.addColumnSelectionInterval(1, 3);
+
+               JList rowHeader = new JList(lm);
+               rowHeader.setFixedCellWidth(50);
+
+               rowHeader.setFixedCellHeight(table.getRowHeight() /*
+        + table.getRowMargin() + table.getIntercellSpacing().height*/);
+
+               rowHeader.setCellRenderer(new RowHeaderRenderer(table));
+
+               JScrollPane scroll = new JScrollPane(table);
+               scroll.setRowHeaderView(rowHeader);
+               getContentPane().add(scroll, BorderLayout.CENTER);
+       }
+
+       /**
+        * ExcelAdapter enables Copy-Paste Clipboard functionality on JTables.
+        * The clipboard data format used by the adapter is compatible with
+        * the clipboard format used by Excel. This provides for clipboard
+        * interoperability between enabled JTables and Excel.
+        */
+       public class ExcelAdapter implements ActionListener
+       {
+               private String rowstring,value;
+               private Clipboard system;
+               private StringSelection stsel;
+               private JTable jTable1 ;
+               /**
+                * The Excel Adapter is constructed with a
+                * JTable on which it enables Copy-Paste and acts
+                * as a Clipboard listener.
+                */
+               public ExcelAdapter(JTable myJTable)
+               {
+                       jTable1 = myJTable;
+                       KeyStroke copy = KeyStroke.getKeyStroke(KeyEvent.VK_C,ActionEvent.CTRL_MASK,false);
+                       // Identifying the copy KeyStroke user can modify this
+                       // to copy on some other Key combination.
+                       KeyStroke paste = KeyStroke.getKeyStroke(KeyEvent.VK_V,ActionEvent.CTRL_MASK,false);
+                       // Identifying the Paste KeyStroke user can modify this
+                       //to copy on some other Key combination.
+                       jTable1.registerKeyboardAction(this,"Copy",copy,JComponent.WHEN_FOCUSED);
+                       jTable1.registerKeyboardAction(this,"Paste",paste,JComponent.WHEN_FOCUSED);
+                       system = Toolkit.getDefaultToolkit().getSystemClipboard();
+               }
+               /**
+                * Public Accessor methods for the Table on which this adapter acts.
+                */
+               public JTable getJTable() {return jTable1;}
+               public void setJTable(JTable jTable1) {this.jTable1=jTable1;}
+               /**
+                * This method is activated on the Keystrokes we are listening to
+                * in this implementation. Here it listens for Copy and Paste ActionCommands.
+                * Selections comprising non-adjacent cells result in invalid selection and
+                * then copy action cannot be performed.
+                * Paste is done by aligning the upper left corner of the selection with the
+                * 1st element in the current selection of the JTable.
+                */
+               public void actionPerformed(ActionEvent e)
+               {
+                       if (e.getActionCommand().compareTo("Copy")==0)
+                       {
+                               StringBuffer sbf=new StringBuffer();
+                               // Check to ensure we have selected only a contiguous block of
+                               // cells
+                               int numcols=jTable1.getSelectedColumnCount();
+                               int numrows=jTable1.getSelectedRowCount();
+                               int[] rowsselected=jTable1.getSelectedRows();
+                               int[] colsselected=jTable1.getSelectedColumns();
+                               if (!((numrows-1==rowsselected[rowsselected.length-1]-rowsselected[0] &&
+                                               numrows==rowsselected.length) &&
+                                               (numcols-1==colsselected[colsselected.length-1]-colsselected[0] &&
+                                                               numcols==colsselected.length)))
+                               {
+                                       JOptionPane.showMessageDialog(null, "Invalid Copy Selection",
+                                                       "Invalid Copy Selection",
+                                                       JOptionPane.ERROR_MESSAGE);
+                                       return;
+                               }
+                               for (int i=0;i<numrows;i++)
+                               {
+                                       for (int j=0;j<numcols;j++)
+                                       {
+                                               sbf.append(jTable1.getValueAt(rowsselected[i],colsselected[j]));
+                                               if (j<numcols-1) sbf.append("\t");
+                                       }
+                                       sbf.append("\n");
+                               }
+                               stsel  = new StringSelection(sbf.toString());
+                               system = Toolkit.getDefaultToolkit().getSystemClipboard();
+                               system.setContents(stsel,stsel);
+                       }
+                       if (e.getActionCommand().compareTo("Paste")==0)
+                       {
+                               int startRow=(jTable1.getSelectedRows())[0];
+                               int startCol=(jTable1.getSelectedColumns())[0];
+                               try
+                               {
+                                       String trstring= (String)(system.getContents(this).getTransferData(DataFlavor.stringFlavor));
+                                       StringTokenizer st1=new StringTokenizer(trstring,"\n");
+                                       for(int i=0;st1.hasMoreTokens();i++)
+                                       {
+                                               rowstring=st1.nextToken();
+                                               StringTokenizer st2=new StringTokenizer(rowstring,"\t");
+                                               for(int j=0;st2.hasMoreTokens();j++)
+                                               {
+                                                       value=(String)st2.nextToken();
+                                                       if (startRow+i< jTable1.getRowCount()  &&
+                                                                       startCol+j< jTable1.getColumnCount())
+                                                               jTable1.setValueAt(value,startRow+i,startCol+j);
+                                               }
+                                       }
+                               }
+                               catch(Exception ex){ex.printStackTrace();}
+                       }
+               }
+       }
+
+
+       public static void main(String[] args) {
+               RowHeaderExample frame = new RowHeaderExample();
+               frame.addWindowListener(new WindowAdapter() {
+                       public void windowClosing(WindowEvent e) {
+                               System.exit(0);
+                       }
+               });
+               frame.setVisible(true);
+       }
 }
\ No newline at end of file