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);
}
}