/*
* User: Harry Glasgow
* Date: 12/12/2002
* Time: 20:41:37
* To change template for new class use
* Code Style | Class Templates options (Tools | IDE Options).
*/
package org.joone.edit.inspection;
import CH.ifa.draw.util.Iconkit;
import CH.ifa.draw.framework.HJDError;
import javax.swing.*;
import java.util.*;
import javax.swing.table.*;
import java.awt.*;
import java.awt.datatransfer.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import org.joone.edit.JoonEdit;
import org.joone.inspection.Inspectable;
import org.joone.inspection.Inspection;
public class InspectionFrame extends JFrame {
/** Collection of Inspection objects */
Collection inspections = new ArrayList();
javax.swing.JTabbedPane center;
JTable[] tables;
/**
*
* Constructor
*
* @param inspectableArg the Inspectable object.
*
*/
public InspectionFrame(Inspectable inspectableArg) {
Iconkit kit = Iconkit.instance();
final Collection copycol = inspectableArg.Inspections();
if (kit == null)
throw new HJDError("Iconkit instance isn't set");
final Image img =
kit.loadImageResource(JoonEdit.DIAGRAM_IMAGES + "JooneIcon.gif");
this.setIconImage(img);
if (inspectableArg != null) {
inspections = inspectableArg.Inspections();
setTitle("Inspection - " + inspectableArg.InspectableTitle());
} else {
setTitle("Inspection");
}
Container contentPane = getContentPane();
contentPane.setLayout(new BorderLayout());
JButton close = new JButton("Close");
close.setToolTipText("Close the inspection frame");
close.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
dispose();
}
});
JButton copybutton = new JButton("Copy");
copybutton.setToolTipText("Copy data as tab delimeted");
copybutton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
Clipboard cb = Toolkit.getDefaultToolkit().getSystemClipboard();
String s = new String("");
if (copycol == null) {} else {
Iterator iter = copycol.iterator();
while (iter.hasNext()) {
Object o = iter.next();
if (o instanceof Inspection) {
Inspection inspection = (Inspection)o;
Component comp = makeTable(inspection);
try {
// If component is a JTable
if (comp.getClass().isInstance(new JTable())) {
JTable tab = (JTable)comp;
int f = inspection.rowNumbers() ? 1 : 0;
for (int i = 0; i < tab.getRowCount(); i++) {
for (int j = f; j < tab.getColumnCount(); j++) {
if (j > f)
s += "\t";
s += tab.getModel().getValueAt(i, j).toString();
}
s += "\n";
}
StringSelection contents = new StringSelection(s);
cb.setContents(contents, null);
} // End if JTable
} catch (Throwable exc) {}
}
}
}
}
});
JButton pastebutton = new JButton("Paste");
pastebutton.setToolTipText("Paste data from tab delimeted source");
pastebutton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
Clipboard cb = Toolkit.getDefaultToolkit().getSystemClipboard();
Transferable contents = cb.getContents(null);
if (contents != null) {
try {
// Read the system clipboard
String s = (String)contents.getTransferData(DataFlavor.stringFlavor);
java.io.StringReader sr = new java.io.StringReader(s);
java.io.LineNumberReader lnr = new java.io.LineNumberReader(sr);
// Gets the current inspetcion component
int curr = center.getSelectedIndex();
Object[] arr = inspections.toArray();
Inspection inspection = (Inspection)arr[curr];
Object[][] newValues = inspection.getComponent();
if (newValues == null)
return;
String line = null;
int iLine = 0;
while (((line = lnr.readLine()) != null) && (iLine < newValues.length)) {
StringTokenizer st = new StringTokenizer(line, " ;,\t\n\r\f");
int iCol = 0;
if (inspection.rowNumbers())
iCol = 1;
while ((st.hasMoreTokens()) && (iCol < newValues[0].length)) {
String token = st.nextToken();
Double val;
try {
val = new Double(token);
newValues[iLine][iCol] = val;
}
catch (NumberFormatException ignore) {}
++iCol;
}
++iLine;
}
// Sets the new values
inspection.setComponent(newValues);
// Substutes the JTable with a new one
center.removeTabAt(curr);
Component pan = createPanel(makeTable(inspection));
center.insertTab(inspection.getTitle(), null, pan, null, curr);
center.setSelectedIndex(curr);
} catch (Exception exc) {exc.printStackTrace();}
}
}
});
JPanel east = new JPanel();
east.setLayout(new GridLayout(6, 1));
east.add(close);
east.add(copybutton);
east.add(pastebutton);
contentPane.add(east, BorderLayout.EAST);
center = new JTabbedPane();
if (inspectableArg == null) {
addTab(center, "error", new JLabel("Inspectable object is null."));
} else {
Collection col = inspectableArg.Inspections();
if (col == null) {
addTab(
center,
"Error",
new JLabel("Inspectable object Collection is null."));
} else {
Iterator iter = col.iterator();
while (iter.hasNext()) {
Object o = iter.next();
if (o instanceof Inspection) {
Inspection inspection = (Inspection)o;
String title = inspection.getTitle();
addTab(center, title, makeTable(inspection));
} else {
addTab(
center,
"Error",
new Label("Object is not an Inspection."));
}
}
}
}
contentPane.add(center, BorderLayout.CENTER);
}
private void addTab(
JTabbedPane jTabbedPane,
String title,
Component component) {
jTabbedPane.addTab(title, createPanel(component));
}
private Component createPanel(Component component) {
JPanel jPanel = new JPanel(new FlowLayout(FlowLayout.LEFT));
jPanel.add(component);
JScrollPane jScrollPane =
new JScrollPane(
jPanel,
JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,
JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
return jScrollPane;
}
public void show() {
pack();
if (getWidth() < 250) {
setSize(250, getHeight());
}
if (getWidth() > 500) {
setSize(500, getHeight());
}
if (getHeight() > 200) {
setSize(getWidth(), 200);
}
Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
setLocation(
(screenSize.width - getWidth()) / 2,
(screenSize.height - getHeight()) / 2);
super.show();
}
private Component makeTable(Inspection inspection) {
Object[][] array = inspection.getComponent();
Object[] names = inspection.getNames();
boolean rowsNumber = inspection.rowNumbers();
if ((array != null) && (names != null)) {
JTable jTable = new JTable(array, names);
if (rowsNumber) {
TableColumn col = jTable.getColumnModel().getColumn(0);
DefaultTableCellRenderer renderer = new DefaultTableCellRenderer();
renderer.setToolTipText("Row Number");
renderer.setBackground(new Color(178, 178, 255));
col.setCellRenderer(renderer);
}
jTable.setAutoResizeMode(JTable.AUTO_RESIZE_SUBSEQUENT_COLUMNS);
jTable.doLayout();
jTable.setEnabled(false);
return jTable;
} else {
return new JLabel("There are no values set for this item.");
}
}
}
Ads help maintain this website.