package net.sourceforge.pain.tools.guitool.dbbrowse; import net.sourceforge.pain.network.guitool.*; import net.sourceforge.pain.tools.guitool.*; import net.sourceforge.pain.tools.guitool.dialog.*; import javax.swing.*; import javax.swing.table.*; import java.awt.*; import java.awt.event.*; import java.util.*; public class GTRawDbBrowser { private JButton findButton; private JTextField oidEdit; private JLabel oidLabel; private JButton refreshButton; private JButton nextButton; private JButton prevButton; private JPanel mainPanel; private JTable contentTable; private JLabel classNameLabel; private TableModel tableModel; private static GTRawDbBrowser single; Vector fields = new Vector(); String activeOid; Vector history = new Vector(); int histPos = 0; public GTRawDbBrowser() { init(); } private void init() { tableModel = new GTDbBrowserTableModel(); contentTable.setModel(tableModel); contentTable.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); final TableColumn valueColumn = contentTable.getColumn("Field Value"); GTRawDbBrowserValueCellHandler re = new GTRawDbBrowserValueCellHandler(this); valueColumn.setCellEditor(re); valueColumn.setCellRenderer(re); findButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { changeActiveObject(); } }); refreshButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { refreshActiveObject(); } }); refreshButton.setEnabled(false); prevButton.setEnabled(false); nextButton.setEnabled(false); oidEdit.addKeyListener(new KeyAdapter() { public void keyPressed(KeyEvent e) { if (e.getKeyCode() == KeyEvent.VK_ENTER) { e.consume(); changeActiveObject(); } } }); mainPanel.addFocusListener(new FocusAdapter() { public void focusGained(FocusEvent e) { oidEdit.selectAll(); oidEdit.requestFocus(); } }); prevButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { goPrev(); } }); nextButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { goNext(); } }); } public synchronized static Component instance() { if (single == null) { single = new GTRawDbBrowser(); } return single.mainPanel; } private class GTDbBrowserTableModel extends AbstractTableModel { public int getColumnCount() { return 3; } public int getRowCount() { return fields.size(); } public Object getValueAt(int rowIndex, int columnIndex) { FieldInfo info = (FieldInfo) fields.get(rowIndex); if (columnIndex == 0) { return info.name; } else if (columnIndex == 1) { return info.getTypeName(); } else { return info; } } public String getColumnName(int column) { return column == 0 ? "Field Name" : (column == 1) ? "Field Type" : "Field Value"; } public boolean isCellEditable(int rowIndex, int columnIndex) { return columnIndex == 2; } } void gotoReference(String oid) { GuiTool.log("Changing active object.."); _updateActiveObject(oid); GuiTool.log("Done."); if (activeOid != null && (history.isEmpty() || !history.get(histPos).equals(activeOid))) { for (int i = history.size(); --i > histPos;) { history.remove(i); } history.addElement(activeOid); histPos = history.size() - 1; } updateButtons(); } void changeActiveObject() { String oid = oidEdit.getText(); if (oid == null || oid.length() == 0) { return; } gotoReference(oid); } private void refreshActiveObject() { GuiTool.log("Refreshing obj info.."); _updateActiveObject(activeOid); GuiTool.log("Refresh done."); } private void updateButtons() { refreshButton.setEnabled(activeOid != null); nextButton.setEnabled(histPos < history.size() - 1); prevButton.setEnabled(histPos > 0); } private void _updateActiveObject(String oid) { try { GTNetPacket p = GlobalPerformer.getConnection().sendBlocking(new GTNetPacket("DbBrowseEvent", new String[]{"retrieve", oid})); final Object values[] = (Object[]) p.data; if (values.length == 1) { JOptionPane.showMessageDialog(mainPanel, values[0], "Error", JOptionPane.ERROR_MESSAGE); } else { oidLabel.setText((String) values[0]); classNameLabel.setText((String) values[1]); fields.clear(); // System.out.println("len:" + values.length); for (int i = 2; i < values.length; i += 3) { fields.add(new FieldInfo((String) values[i], ((Integer)values[i + 1]).intValue(), values[i + 2])); } activeOid = (String) values[0]; contentTable.setVisible(false); TableCellEditor cellEditor = contentTable.getCellEditor(); if (cellEditor!=null) { cellEditor.cancelCellEditing(); } oidEdit.requestFocus(); contentTable.setVisible(true); } } catch (Exception e) { GuiTool.showFailInfo(e); GuiTool.log("Error." + e.getMessage()); } } private void goNext() { if (histPos < history.size() - 1) { histPos++; String oid = (String) history.get(histPos); _updateActiveObject(oid); updateButtons(); } } private void goPrev() { if (histPos > 0) { histPos--; String oid = (String) history.get(histPos); _updateActiveObject(oid); updateButtons(); } } { // GUI initializer generated by IntelliJ IDEA GUI Designer // >>> IMPORTANT!! <<< // DO NOT EDIT OR ADD ANY CODE HERE! $$$setupUI$$$(); } /** * Method generated by IntelliJ IDEA GUI Designer * >>> IMPORTANT!! <<< * DO NOT edit this method OR call it in your code! */ private void $$$setupUI$$$() { final JPanel _1; _1 = new JPanel(); mainPanel = _1; _1.setLayout(new com.intellij.uiDesigner.core.GridLayoutManager(3, 1, new Insets(0, 0, 0, 0), -1, -1)); final JPanel _2; _2 = new JPanel(); _2.setLayout(new com.intellij.uiDesigner.core.GridLayoutManager(1, 1, new Insets(0, 0, 0, 0), -1, -1)); _1.add(_2, new com.intellij.uiDesigner.core.GridConstraints(0, 0, 1, 1, 0, 3, 3, 3, null, null, null)); _2.setBorder(BorderFactory.createTitledBorder(BorderFactory.createEtchedBorder(), null)); final JPanel _3; _3 = new JPanel(); _3.setLayout(new com.intellij.uiDesigner.core.GridLayoutManager(1, 7, new Insets(0, 0, 0, 0), -1, -1)); _2.add(_3, new com.intellij.uiDesigner.core.GridConstraints(0, 0, 1, 1, 0, 3, 3, 3, null, null, null)); final JButton _4; _4 = new JButton(); prevButton = _4; _4.setToolTipText("Goto prev object"); _4.setText("Prev"); _3.add(_4, new com.intellij.uiDesigner.core.GridConstraints(0, 0, 1, 1, 0, 2, 3, 0, null, null, null)); final JButton _5; _5 = new JButton(); nextButton = _5; _5.setToolTipText("Goto next object"); _5.setText("Next"); _3.add(_5, new com.intellij.uiDesigner.core.GridConstraints(0, 1, 1, 1, 0, 1, 3, 0, null, null, null)); final JButton _6; _6 = new JButton(); refreshButton = _6; _6.setToolTipText("Refresh fields values"); _6.setText("Refresh"); _3.add(_6, new com.intellij.uiDesigner.core.GridConstraints(0, 2, 1, 1, 0, 1, 3, 0, null, null, null)); final com.intellij.uiDesigner.core.Spacer _7; _7 = new com.intellij.uiDesigner.core.Spacer(); _3.add(_7, new com.intellij.uiDesigner.core.GridConstraints(0, 3, 1, 1, 0, 1, 6, 1, null, null, null)); final JLabel _8; _8 = new JLabel(); _8.setText("OID:"); _3.add(_8, new com.intellij.uiDesigner.core.GridConstraints(0, 4, 1, 1, 8, 0, 0, 0, null, null, null)); final JTextField _9; _9 = new JTextField(); oidEdit = _9; _9.setToolTipText("Enter object oid or 'root' "); _9.setText("root"); _9.setFocusCycleRoot(false); _3.add(_9, new com.intellij.uiDesigner.core.GridConstraints(0, 5, 1, 1, 8, 1, 6, 0, null, new Dimension(150, -1), null)); final JButton _10; _10 = new JButton(); findButton = _10; _10.setToolTipText("Find object with specified oid"); _10.setText("Find"); _3.add(_10, new com.intellij.uiDesigner.core.GridConstraints(0, 6, 1, 1, 0, 1, 3, 0, null, null, null)); final JPanel _11; _11 = new JPanel(); _11.setLayout(new com.intellij.uiDesigner.core.GridLayoutManager(1, 7, new Insets(0, 0, 0, 0), -1, -1)); _1.add(_11, new com.intellij.uiDesigner.core.GridConstraints(1, 0, 1, 1, 0, 3, 3, 3, null, null, null)); _11.setBorder(BorderFactory.createTitledBorder(BorderFactory.createEtchedBorder(), null)); final com.intellij.uiDesigner.core.Spacer _12; _12 = new com.intellij.uiDesigner.core.Spacer(); _11.add(_12, new com.intellij.uiDesigner.core.GridConstraints(0, 6, 1, 1, 0, 1, 6, 1, null, null, null)); final JLabel _13; _13 = new JLabel(); classNameLabel = _13; _13.setText("None"); _11.add(_13, new com.intellij.uiDesigner.core.GridConstraints(0, 5, 1, 1, 8, 0, 0, 0, null, null, null)); final JLabel _14; _14 = new JLabel(); _14.setText("Class:"); _11.add(_14, new com.intellij.uiDesigner.core.GridConstraints(0, 4, 1, 1, 8, 0, 0, 0, null, null, null)); final com.intellij.uiDesigner.core.Spacer _15; _15 = new com.intellij.uiDesigner.core.Spacer(); _11.add(_15, new com.intellij.uiDesigner.core.GridConstraints(0, 3, 1, 1, 0, 1, 0, 1, null, null, null)); final JLabel _16; _16 = new JLabel(); oidLabel = _16; _16.setText("None"); _11.add(_16, new com.intellij.uiDesigner.core.GridConstraints(0, 2, 1, 1, 8, 0, 0, 0, null, null, null)); final com.intellij.uiDesigner.core.Spacer _17; _17 = new com.intellij.uiDesigner.core.Spacer(); _11.add(_17, new com.intellij.uiDesigner.core.GridConstraints(0, 0, 1, 1, 0, 1, 0, 1, null, null, null)); final JLabel _18; _18 = new JLabel(); _18.setText("OID:"); _11.add(_18, new com.intellij.uiDesigner.core.GridConstraints(0, 1, 1, 1, 8, 0, 0, 0, null, null, null)); final JPanel _19; _19 = new JPanel(); _19.setLayout(new com.intellij.uiDesigner.core.GridLayoutManager(1, 1, new Insets(0, 0, 0, 0), -1, -1)); _1.add(_19, new com.intellij.uiDesigner.core.GridConstraints(2, 0, 1, 1, 0, 3, 3, 7, null, null, null)); final JScrollPane _20; _20 = new JScrollPane(); _19.add(_20, new com.intellij.uiDesigner.core.GridConstraints(0, 0, 1, 1, 0, 3, 7, 7, null, null, null)); final JTable _21; _21 = new JTable(); contentTable = _21; _20.setViewportView(_21); } }