package realcix20.guis.views;
import java.awt.Color;
import java.awt.Component;
import java.awt.Container;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.Insets;
import java.awt.event.ActionEvent;
import java.awt.event.KeyEvent;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Iterator;
import java.util.Vector;
import javax.swing.AbstractAction;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JEditorPane;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JPanel;
import javax.swing.JPopupMenu;
import javax.swing.JScrollPane;
import javax.swing.JSplitPane;
import javax.swing.JTable;
import javax.swing.JToolBar;
import javax.swing.JTree;
import javax.swing.ListSelectionModel;
import javax.swing.SwingConstants;
import javax.swing.SwingUtilities;
import javax.swing.border.EtchedBorder;
import javax.swing.border.TitledBorder;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;
import javax.swing.event.TreeSelectionEvent;
import javax.swing.event.TreeSelectionListener;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableCellRenderer;
import javax.swing.tree.DefaultMutableTreeNode;
import javax.swing.tree.DefaultTreeCellRenderer;
import javax.swing.tree.DefaultTreeModel;
import javax.swing.tree.TreePath;
import javax.swing.tree.TreeSelectionModel;
import org.jdesktop.swingx.JXTable;
import org.jdesktop.swingx.decorator.AlternateRowHighlighter;
import org.jdesktop.swingx.decorator.Highlighter;
import org.jdesktop.swingx.decorator.HighlighterPipeline;
import org.jdesktop.swingx.decorator.PatternHighlighter;
import org.jdesktop.swingx.decorator.RolloverHighlighter;
import org.jdesktop.swingx.table.TableColumnExt;
import realcix20.classes.BudgetClass;
import realcix20.classes.BudgetSettingClass;
import realcix20.classes.CorrespondenceTypeClass;
import realcix20.classes.CountryClass;
import realcix20.classes.CurrencyClass;
import realcix20.classes.FamilyClass;
import realcix20.classes.LanguageClass;
import realcix20.classes.LedgerTypeClass;
import realcix20.classes.NameSpaceClass;
import realcix20.classes.RegClass;
import realcix20.classes.ServiceClass;
import realcix20.classes.TaxDepClass;
import realcix20.classes.UserClass;
import realcix20.classes.XRClass;
import realcix20.classes.basic.BaseClass;
import realcix20.classes.basic.Cell;
import realcix20.classes.basic.ClassManager;
import realcix20.classes.basic.Column;
import realcix20.classes.basic.Row;
import realcix20.classes.basic.RowSet;
import realcix20.classes.plugins.CurrencyPlugin;
import realcix20.guis.components.CacheTableModel;
import realcix20.guis.components.XTable;
import realcix20.guis.listeners.MainListener;
import realcix20.guis.models.IndexTableModel;
import realcix20.guis.models.ItemTableModel;
import realcix20.guis.utils.ImageManager;
import realcix20.guis.utils.KeyUtil;
import realcix20.guis.utils.MenuManager;
import realcix20.guis.utils.MnemonicGenerator;
import realcix20.guis.utils.TxtManager;
import realcix20.utils.CSQLUtil;
import realcix20.utils.DAO;
import realcix20.utils.GlobalValueManager;
import realcix20.utils.ObjectUtil;
import realcix20.utils.Resources;
public class MainView extends JFrame implements TreeSelectionListener {
private JToolBar toolBar;
private XTable objectViewTable;
private XTable reportViewTable;
private JSplitPane splitPane;
private JPanel leftPanel;
private JPanel rightPanel;
private JSplitPane objectTableSplitPane;
private JTree tree;
private JPopupMenu treePopupMenu;
private JXTable objectTable;
private JXTable objectChildTable;//will be added
private JPopupMenu objectTablePopupMenu;
private JButton addObjectButton;
private JButton editObjectButton;
private JButton deleteObjectButton;
private JEditorPane previewPane;
private JMenuBar menuBar;
private JXTable layoutTable;
private JXTable objectLayoutTable;
private JPopupMenu objectLayoutTablePopMenu;
private BaseClass currentObject;
private int layout = -1;
private MainListener listener;
//specify, Used by regClass
private String regAnaly = null;
public MainView() {
listener = new MainListener(this);
initComponents();
initMenuBar();
}
class TreeCellRenderer extends DefaultTreeCellRenderer {
public Component getTreeCellRendererComponent(JTree tree, Object value,boolean selected,
boolean expanded,boolean leaf, int row, boolean hasFocus){
super.getTreeCellRendererComponent(tree, value, selected,expanded, leaf, row,hasFocus);
DefaultMutableTreeNode node = (DefaultMutableTreeNode) value;
if (node.getUserObject() instanceof ObjectInfo) {
ObjectInfo oj = (ObjectInfo)node.getUserObject();
super.getTreeCellRendererComponent(tree, value, selected,expanded, leaf, row,hasFocus);
if (oj.flag.equals("account"))
setIcon(ImageManager.getImage(ImageManager.ACCOUNT_IMAGE));
else if (oj.flag.equals("accountSettings"))
setIcon(ImageManager.getImage(ImageManager.ACCOUNT_SETTINGS_IMAGE));
else if (oj.flag.equals("dailyReport"))
setIcon(ImageManager.getImage(ImageManager.DAILY_REPORT_IMAGE));
else if (oj.flag.equals("module"))
setIcon(ImageManager.getImage(ImageManager.MODULE_IMAGE));
else if (oj.flag.equals("object")) {
if (oj.clsId == 510)
setIcon(ImageManager.getImage(ImageManager.REG_IMAGE));
else if (oj.clsId == 520)
setIcon(ImageManager.getImage(ImageManager.CORRESPONDENCE_IMAGE));
else if (oj.clsId == 530)
setIcon(ImageManager.getImage(ImageManager.TAX_IMAGE));
else if (oj.clsId == 540)
setIcon(ImageManager.getImage(ImageManager.BUDGET_IMAGE));
else
setIcon(ImageManager.getImage(ImageManager.ACCOUNT_SETTINGS_ITEMS_IMAGE));
}
else if (oj.flag.equals("report"))
setIcon(ImageManager.getImage(ImageManager.REPORT_IMAGE));
}
return this;
}
}
public void updateObjectLayoutTable() {
if (objectLayoutTable == null) {
objectLayoutTable = new JXTable();
getObjectLayoutTable().setHorizontalScrollEnabled(true);
getObjectLayoutTable().setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
getObjectLayoutTable().setHighlighters(new HighlighterPipeline(
new Highlighter[]{ AlternateRowHighlighter.genericGrey,
new RolloverHighlighter(Color.BLACK, Color.WHITE)}));
getObjectLayoutTable().setSortable(true);
getObjectLayoutTable().setEditable(false);
getObjectLayoutTable().setComponentPopupMenu(objectLayoutTablePopMenu);
getObjectLayoutTable().addMouseListener(listener);
//fix
getObjectLayoutTable().addMouseListener(new MouseAdapter(){
public void mouseClicked(MouseEvent e) {
if(e.getClickCount()==2){
MainView.this.setEnabled(false);
listener.actionPerformed(new ActionEvent("no src",ActionEvent.ACTION_PERFORMED, "Object Edit From Report"));
}
}
});
//fix
KeyUtil.add("ENTER", getObjectLayoutTable(), new AbstractAction(){
public void actionPerformed(ActionEvent e) {
listener.actionPerformed(new ActionEvent("no src",ActionEvent.ACTION_PERFORMED, "Object Edit From Report"));
}
});
KeyUtil.add("F6", getObjectLayoutTable(), new AbstractAction(){
public void actionPerformed(ActionEvent e) {
listener.actionPerformed(new ActionEvent("no src",ActionEvent.ACTION_PERFORMED, "Object Edit From Report"));
}
});
}
getObjectLayoutTable().setModel(new DefaultTableModel());
//TODO maybe...shuould be used?
if(reportViewTable!=null&&reportViewTable.getTable()!=null){
CacheTableModel tm = (CacheTableModel)reportViewTable.getTable().getModel();
int selectedRowNumber = reportViewTable.getTable().getSelectedRow();
if ( (!tm.isNoRow()) && (selectedRowNumber != -1) ) {
String sql = null;
String basic_sql = currentObject.getBasicSQL();
if (basic_sql.indexOf("WHERE") > -1) {
StringBuffer sb = new StringBuffer(basic_sql.substring(
0, basic_sql.indexOf("WHERE") + 5));
for (int i = 0; i < tm.getTables().size(); i++) {
String tableName = (String)tm.getTables().get(i);
String columnName = (String)tm.getColumns().get(i);
Object value = tm.getValueAt(selectedRowNumber, i + 1);
if (tableName.trim().length() > 0) {
String insert_sql = " " + tableName + "." + columnName + "=" + "'" + value + "'" + " AND ";
sb.append(insert_sql);
}
}
sb.append(basic_sql.indexOf("WHERE") + 5);
sql = sb.toString();
} else {
StringBuffer sb = new StringBuffer(basic_sql);
int n = 0;
for (int i = 0; i < tm.getTables().size(); i++) {
String tableName = (String)tm.getTables().get(i);
String columnName = (String)tm.getColumns().get(i);
Object value = tm.getDataAt(selectedRowNumber, i + 1);
//�������޶���
if(value==null){
sb.setLength(0);
break;
}
if (tableName.trim().length() > 0) {
String insert_sql = null;
if (n == 0)
insert_sql = " WHERE " + tableName + "." + columnName + "=" + "'" + value + "'";
else
insert_sql = " AND " + tableName + "." + columnName + "=" + "'" + value + "'";
n++;
sb.append(insert_sql);
}
}
sql = sb.toString();
}
getObjectLayoutTable().setModel(new CacheTableModel(currentObject, sql, "object"));
getObjectLayoutTable().updateUI();
}
}
}
public void updateReportViewTable(int layoutId) {
currentObject = ClassManager.createClass(currentObject.getClsId());
setCurrentObject(currentObject);
DAO dao = DAO.getInstance();
dao.query(Resources.SELECT_CL_SQL);
dao.setInt(1, currentObject.getClsId());
dao.setInt(2, layoutId);
ResultSet rs = dao.executeQuery();
String report_basic_sql = null;
//fix CSQL
String csql = null;
try {
if (rs.next()){
report_basic_sql = rs.getString("SQL");
csql = rs.getString("CSQL");
}
rs.close();
} catch (SQLException sqle) {
sqle.printStackTrace();
}
if ((report_basic_sql!= null) && (!report_basic_sql.trim().equals(""))) {
// add CSQL
report_basic_sql=CSQLUtil.add(report_basic_sql, csql);
}
if(reportViewTable==null){
reportViewTable = new XTable(currentObject, report_basic_sql,layoutId);
}else{
reportViewTable.setReport_basic_sql(layoutId,report_basic_sql);
}
reportViewTable.setContainer(this);
reportViewTable.getTable().setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
reportViewTable.getTable().getSelectionModel().addListSelectionListener(
new ListSelectionListener() {
public void valueChanged(ListSelectionEvent e) {
updateObjectLayoutTable();
}
});
updateObjectLayoutTable();
}
public void updateObjectViewTable() {
currentObject = ClassManager.createClass(currentObject.getClsId());
if (objectViewTable == null) {
objectViewTable = new XTable(currentObject);
objectViewTable.setContainer(this);
objectChildTable = new JXTable();
}
objectViewTable.enableReportOpt(false);
objectViewTable.getTable().setComponentPopupMenu(objectTablePopupMenu);
//fix
// objectViewTable.getTable().addMouseListener(new MouseAdapter() {
// public void mouseClicked(MouseEvent e) {
// if (e.getClickCount() == 2) {
// MainView.this.setEnabled(false);
//listener.actionPerformed(new ActionEvent("no src",ActionEvent.ACTION_PERFORMED, "Object Edit"));
//fix ��ֹÑ������
// listener.initialObjectEdit();
// }
// }
// });
//fix
KeyUtil.add("ENTER", objectViewTable.getTable(), new AbstractAction(){
public void actionPerformed(ActionEvent e) {
listener.actionPerformed(new ActionEvent("no src",ActionEvent.ACTION_PERFORMED, "Object Edit"));
}
});
KeyUtil.add("F6", objectViewTable.getTable(), new AbstractAction(){
public void actionPerformed(ActionEvent e) {
listener.actionPerformed(new ActionEvent("no src",ActionEvent.ACTION_PERFORMED, "Object Edit"));
}
});
objectViewTable.getTable().getSelectionModel().addListSelectionListener(
new ListSelectionListener() {
public void valueChanged(ListSelectionEvent e) {
updateObjectChildTable();
}
});
objectViewTable.setObject(currentObject);
if ( (currentObject instanceof BudgetSettingClass) || (regAnaly != null) ||
(currentObject instanceof RegClass) ) {
objectViewTable.getTable().setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);
} else
objectViewTable.getTable().setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
updateObjectChildTable();
}
public void updateObjectChildTable() {
if (!getCurrentObject().isSlayerMaster()) {
objectTableSplitPane.setBottomComponent(null);
objectTableSplitPane.setDividerLocation(900);
} else {
CacheTableModel tm = (CacheTableModel)objectViewTable.getTable().getModel();
int selectedRowNumber = objectViewTable.getTable().getSelectedRow();
if ( (!tm.isNoRow()) && (selectedRowNumber != -1) ) {
Vector values = new Vector();
for (int i = 1; i < tm.getColumnCount(); i++) {
String tableName = tm.getColumn(i).getTableName();
String columnName = tm.getColumn(i).getColumnName();
Object value = tm.getValueAt(selectedRowNumber, i);
//TODO
/**
* because this tablemodel isn't based row, so..no way to find one cell true value...
* just get the substring before '-'.....
* these will be resolved in next version
*/
if(value.toString().indexOf('-')!=-1){
value=value.toString().substring(0,value.toString().indexOf('-')).trim();
}
Cell cell = new Cell(tableName, columnName, value);
values.add(cell);
}
Row selectedRow = new Row(values, getCurrentObject().getRowType());
getCurrentObject().loadChilds(selectedRow);
ItemTableModel imodel = new ItemTableModel(getCurrentObject(), selectedRow);
objectChildTable.setHighlighters(new HighlighterPipeline(
new Highlighter[]{ AlternateRowHighlighter.genericGrey,
new RolloverHighlighter(Color.BLACK, Color.WHITE)}));
objectChildTable.setModel(imodel);
objectChildTable.getColumnExt(objectChildTable.getColumnCount(true) -1).setVisible(false);
} else
objectChildTable.setModel(new DefaultTableModel());
}
}
private void updatePreviewPane() {
if ( (objectTable.getSelectedRow() != -1) && (objectTable.getRowCount() > objectTable.getSelectedRow()) ) {
int selectedRowNumber = objectTable.convertRowIndexToModel(objectTable.getSelectedRow());
IndexTableModel model = (IndexTableModel)objectTable.getModel();
Vector dataVector = model.getDataVector();
Vector rowDatas = (Vector)dataVector.get(selectedRowNumber);
Row row = (Row)rowDatas.get(rowDatas.size() - 1);
Iterator columnIter = getCurrentObject().getColumns().iterator();
Vector cells = row.getNewCells();
StringBuffer sb = new StringBuffer();
while (columnIter.hasNext()) {
Column column = (Column)columnIter.next();
if (column.isHeadField()) {
sb.append(column.toString() + " --- ");
for (int k = 0; k < cells.size(); k++) {
Cell cell = (Cell)cells.get(k);
if ((cell.getColumnName().equals(column.getColumnName())) && (cell.getTableName().equals(column.getTableName()))) {
if (cell.getColumnValue() != null)
sb.append(cell.getColumnValue());
sb.append("\n");
break;
}
}
}
}
sb.append("\n");
boolean hasItemTableField = false;
columnIter = getCurrentObject().getColumns().iterator();
while (columnIter.hasNext()) {
Column column = (Column)columnIter.next();
if (column.isItemTableField()) {
hasItemTableField = true;
sb.append(column.toString() + "\t");
}
}
sb.append("\n");
if (hasItemTableField) {
RowSet rowSet = row.getRowSet();
Iterator rowIter = rowSet.getRows().iterator();
while (rowIter.hasNext()) {
Row tempRow = (Row)rowIter.next();
Iterator cellIter = tempRow.getNewCells().iterator();
while (cellIter.hasNext()) {
Cell cell = (Cell)cellIter.next();
columnIter = getCurrentObject().getColumns().iterator();
while (columnIter.hasNext()) {
Column column = (Column)columnIter.next();
if ( (column.isItemTableField()) && (column.getTableName().equals(cell.getTableName()))
&& (column.getColumnName().equals(cell.getColumnName())) ) {
if (cell.getColumnValue() != null) {
sb.append(cell.getColumnValue() + "\t");
}
}
}
}
sb.append("\n");
}
}
previewPane.setText(sb.toString());
}
}
private void updateObjectButton() {
if (getObjectTable().getSelectedRow() != -1) {
editObjectButton.setEnabled(true);
deleteObjectButton.setEnabled(true);
} else {
editObjectButton.setEnabled(false);
deleteObjectButton.setEnabled(false);
}
}
public void valueChanged(TreeSelectionEvent e) {
if (e.getSource().equals(getTree())) {
//fix
SwingUtilities.invokeLater(new Runnable(){
public void run() {
updateRightPanelUI();//update UI
}
}) ;
}
}
public void updateTable() {
if (getCurrentObject() != null) {
//setCurrentObject(ClassManager.createClass(getCurrentObject().getClsId()));
IndexTableModel tableModel = new IndexTableModel(getCurrentObject());
objectTable.setModel(tableModel);
if (objectTable.getRowCount() > 0)
objectTable.removeRowSelectionInterval(0, objectTable.getRowCount() - 1);
objectTable.getColumnExt(objectTable.getColumnCount(true) - 1).setVisible(false);
//add Highlighting
setHighLighting();
} else {
getObjectTable().setModel(new DefaultTableModel());
}
}
private void setHighLighting() {
HighlighterPipeline highlighters = new HighlighterPipeline();
highlighters.addHighlighter(new AlternateRowHighlighter());
highlighters.addHighlighter(new RolloverHighlighter(Color.BLACK, Color.WHITE));
if (getCurrentObject().getClsId() == 160) {//for currency object
PatternHighlighter pattern = new PatternHighlighter();
int columnIndex = -1;
for (int i = 0; i < objectTable.getColumnCount(false); i++) {
TableColumnExt tce = objectTable.getColumnExt(i);
String ccTitle = ObjectUtil.findColumnTxt(160, "C", "C");
if (ccTitle.equals(tce.getTitle())) {
columnIndex = i;
break;
}
}
if (columnIndex != -1) {
String lc = CurrencyPlugin.getInstance().getLc();
String regularExpr = lc;
pattern.setPattern(regularExpr, columnIndex);
pattern.setBackground(Color.BLUE);
pattern.setForeground(Color.WHITE);
highlighters.addHighlighter(pattern);
}
} else if (getCurrentObject().getClsId() == 140) {//for ruser object
PatternHighlighter pattern = new PatternHighlighter();
int columnIndex = -1;
for (int i = 0; i < objectTable.getColumnCount(false); i++) {
TableColumnExt tce = objectTable.getColumnExt(i);
String ccTitle = ObjectUtil.findColumnTxt(140, "RUSER", "RUSER");
if (ccTitle.equals(tce.getTitle())) {
columnIndex = i;
break;
}
}
if (columnIndex != -1) {
String regularExpr = GlobalValueManager.getValue("SESSION.LOGINUSER");
pattern.setPattern(regularExpr, columnIndex);
pattern.setBackground(Color.BLUE);
pattern.setForeground(Color.WHITE);
highlighters.addHighlighter(pattern);
}
} else if (getCurrentObject().getClsId() == 120) {//for at object
PatternHighlighter pattern = new PatternHighlighter();
int columnIndex = -1;
for (int i = 0; i < objectTable.getColumnCount(false); i++) {
TableColumnExt tce = objectTable.getColumnExt(i);
String ccTitle = ObjectUtil.findColumnTxt(120, "AT", "AT");
if (ccTitle.equals(tce.getTitle())) {
columnIndex = i;
break;
}
}
if (columnIndex != -1) {
String regularExpr = GlobalValueManager.getValue("APPLICATION.AT");
pattern.setPattern(regularExpr, columnIndex);
pattern.setBackground(Color.BLUE);
pattern.setForeground(Color.WHITE);
highlighters.addHighlighter(pattern);
}
}
objectTable.setHighlighters(highlighters);
}
//Used by some specify objects
public void updateTableWithoutCreateNewObject() {
if (getCurrentObject() != null) {
IndexTableModel tableModel = new IndexTableModel(getCurrentObject());
objectTable.setModel(tableModel);
objectTable.getColumnExt(objectTable.getColumnCount(true) - 1).setVisible(false);
} else {
getObjectTable().setModel(new DefaultTableModel());
}
}
private void initialObjectLayoutTablePopMenu() {
objectLayoutTablePopMenu = new JPopupMenu();
JMenuItem editItem = new JMenuItem();
editItem.setText(MnemonicGenerator.generateMnemonicString(TxtManager.getTxt("VIEW.OBJECTEDIT.GLOBAL.EDIT"), KeyEvent.VK_E));
editItem.setMnemonic(KeyEvent.VK_E);
editItem.setIcon(ImageManager.getImage(ImageManager.TABLE_ROW_EDIT_IMAGE));
editItem.setActionCommand("Object Edit From Report");
editItem.addActionListener(getListener());
objectTablePopupMenu.add(editItem);
objectLayoutTablePopMenu.add(editItem);
}
private void initialObjectTablePopMenu() {
objectTablePopupMenu = new JPopupMenu();
JMenuItem addItem = new JMenuItem();
addItem.setText(MnemonicGenerator.generateMnemonicString(TxtManager.getTxt("VIEW.OBJECTEDIT.GLOBAL.ADD"), KeyEvent.VK_A));
addItem.setMnemonic(KeyEvent.VK_A);
addItem.setIcon(ImageManager.getImage(ImageManager.TABLE_ROW_ADD_IMAGE));
addItem.setActionCommand("Object Add");
addItem.addActionListener(getListener());
objectTablePopupMenu.add(addItem);
//specify, disabled addItem
if ( (currentObject instanceof BudgetClass) ||
(currentObject instanceof FamilyClass) ||
(currentObject instanceof LanguageClass) ||
(currentObject instanceof CountryClass) ||
(currentObject instanceof CurrencyClass) ||
(currentObject instanceof LedgerTypeClass) ||
(currentObject instanceof CorrespondenceTypeClass) ||
(currentObject instanceof ServiceClass) )
addItem.setEnabled(false);
JMenuItem editItem = new JMenuItem();
editItem.setText(MnemonicGenerator.generateMnemonicString(TxtManager.getTxt("VIEW.OBJECTEDIT.GLOBAL.EDIT"), KeyEvent.VK_E));
editItem.setMnemonic(KeyEvent.VK_E);
editItem.setIcon(ImageManager.getImage(ImageManager.TABLE_ROW_EDIT_IMAGE));
editItem.setActionCommand("Object Edit");
editItem.addActionListener(getListener());
objectTablePopupMenu.add(editItem);
JMenuItem deleteItem = new JMenuItem();
deleteItem.setText(MnemonicGenerator.generateMnemonicString(TxtManager.getTxt("VIEW.OBJECTEDIT.GLOBAL.DELETE"), KeyEvent.VK_D));
deleteItem.setMnemonic(KeyEvent.VK_D);
deleteItem.setIcon(ImageManager.getImage(ImageManager.TABLE_ROW_DELETE_IMAGE));
deleteItem.setActionCommand("Object Delete");
deleteItem.addActionListener(getListener());
objectTablePopupMenu.add(deleteItem);
//specify, disabled deleteItem
if ( (currentObject instanceof FamilyClass) ||
(currentObject instanceof LanguageClass) ||
(currentObject instanceof CountryClass) ||
(currentObject instanceof CurrencyClass) ||
(currentObject instanceof XRClass) ||
(currentObject instanceof LedgerTypeClass) ||
(currentObject instanceof BudgetSettingClass) ||
(currentObject instanceof CorrespondenceTypeClass) ||
(currentObject instanceof ServiceClass) )
deleteItem.setEnabled(false);
}
//specify,Used by BudgetSettingClass
private void initialBudgetTablePopMenu() {
initialObjectTablePopMenu();
objectTablePopupMenu.addSeparator();
JMenuItem copyToAnotherMonthItem = new JMenuItem(TxtManager.getTxt("BUDGETSETTING.COPYTOANOTHERMONTH"), ImageManager.getImage(ImageManager.COPY_TO_ANOTHER_MONTH_IMAGE));
copyToAnotherMonthItem.setActionCommand("Copy To Another Month");
copyToAnotherMonthItem.addActionListener(getListener());
objectTablePopupMenu.add(copyToAnotherMonthItem);
}
//specify,Used by PartnerClass
private void initialPartnerTablePopMenu() {
}
//specify,Used by RegClass
private void initialRegTablePopMenu() {
initialObjectTablePopMenu();
objectTablePopupMenu.addSeparator();
JMenuItem copyRegisterItem = new JMenuItem();
copyRegisterItem.setText(MnemonicGenerator.generateMnemonicString(TxtManager.getTxt("VIEW.OBJECTEDIT.REG.COPYREGISTER"), KeyEvent.VK_R));
copyRegisterItem.setMnemonic(KeyEvent.VK_R);
copyRegisterItem.setIcon(ImageManager.getImage(ImageManager.CREATE_BY_OBJECT_IMAGE));
copyRegisterItem.setActionCommand("Create By Object");
copyRegisterItem.addActionListener(getListener());
objectTablePopupMenu.add(copyRegisterItem);
JMenuItem copyRegisterItemsItem = new JMenuItem();
copyRegisterItemsItem.setText(MnemonicGenerator.generateMnemonicString(TxtManager.getTxt("VIEW.OBJECTEDIT.REG.COPYREGISTERITEMS"), KeyEvent.VK_I));
copyRegisterItemsItem.setMnemonic(KeyEvent.VK_I);
copyRegisterItemsItem.setIcon(ImageManager.getImage(ImageManager.CREATE_BY_MULTI_ROWS_IMAGE));
copyRegisterItemsItem.setActionCommand("Create By Multi Rows");
copyRegisterItemsItem.addActionListener(getListener());
objectTablePopupMenu.add(copyRegisterItemsItem);
}
private void initialRegTablePopMenu(String regAnaly) {
objectTablePopupMenu = new JPopupMenu();
if (regAnaly.equals("Clear")) {
JMenuItem setClearedItem = new JMenuItem(TxtManager.getTxt("REG.SETCLEARED"),
ImageManager.getImage(ImageManager.SET_CLEARED_IMAGE));
setClearedItem.setActionCommand("Set Cleared");
setClearedItem.addActionListener(getListener());
objectTablePopupMenu.add(setClearedItem);
} else if (regAnaly.equals("Un Clear")) {
JMenuItem setUnClearedItem = new JMenuItem(TxtManager.getTxt("REG.SETUNCLEARED"),
ImageManager.getImage(ImageManager.SET_UNCLEARED_IMAGE));
setUnClearedItem.setActionCommand("Set Un Cleared");
setUnClearedItem.addActionListener(getListener());
objectTablePopupMenu.add(setUnClearedItem);
}
}
public void updateTreePopupMenu() {
treePopupMenu = null;
if (tree.getLastSelectedPathComponent() != null) {
treePopupMenu = new JPopupMenu();
DefaultMutableTreeNode node = (DefaultMutableTreeNode)tree.getLastSelectedPathComponent();
TreePath path = tree.getLeadSelectionPath();
ObjectInfo oj = (ObjectInfo)node.getUserObject();
if ( (oj.flag.equals("account")) || (oj.flag.equals("accountSettings")) || (oj.flag.equals("dailyReport")) || (oj.flag.equals("module")) || (oj.flag.equals("object")) ) {
boolean isExpanded = tree.isExpanded(path);
JMenuItem expandMenuItem = new JMenuItem();
expandMenuItem.setText(MnemonicGenerator.generateMnemonicString(TxtManager.getTxt("VIEW.MAINFRAME.TREE.POPUPMENU.EXPAND"), KeyEvent.VK_E));
expandMenuItem.setMnemonic(KeyEvent.VK_E);
expandMenuItem.setIcon(ImageManager.getImage(ImageManager.EXPAND_IMAGE));
expandMenuItem.setActionCommand("Expand");
expandMenuItem.addActionListener(listener);
treePopupMenu.add(expandMenuItem);
JMenuItem collapseMenuItem = new JMenuItem();
collapseMenuItem.setText(MnemonicGenerator.generateMnemonicString(TxtManager.getTxt("VIEW.MAINFRAME.TREE.POPUPMENU.COLLAPSE"), KeyEvent.VK_C));
collapseMenuItem.setMnemonic(KeyEvent.VK_C);
collapseMenuItem.setIcon(ImageManager.getImage(ImageManager.COLLAPSE_IMAGE));
collapseMenuItem.setActionCommand("Collapse");
collapseMenuItem.addActionListener(listener);
treePopupMenu.add(collapseMenuItem);
if (node.getChildCount() == 0) {
expandMenuItem.setEnabled(false);
collapseMenuItem.setEnabled(false);
} else if (isExpanded) {
expandMenuItem.setEnabled(false);
collapseMenuItem.setEnabled(true);
} else {
expandMenuItem.setEnabled(true);
collapseMenuItem.setEnabled(false);
}
if (oj.flag.equals("dailyReport")) {
treePopupMenu.addSeparator();
JMenuItem removeAllReportsMenuItem = new JMenuItem();
removeAllReportsMenuItem.setText(MnemonicGenerator.generateMnemonicString(TxtManager.getTxt("VIEW.MAINFRAME.TREE.POPUPMENU.REMOVEALLREPORTS"), KeyEvent.VK_R));
removeAllReportsMenuItem.setMnemonic(KeyEvent.VK_R);
removeAllReportsMenuItem.setIcon(ImageManager.getImage(ImageManager.EMPTY_IMAGE));
removeAllReportsMenuItem.setActionCommand("Remove All Reports From Daily Report");
removeAllReportsMenuItem.addActionListener(listener);
treePopupMenu.add(removeAllReportsMenuItem);
if (node.getChildCount() > 0)
removeAllReportsMenuItem.setEnabled(true);
else
removeAllReportsMenuItem.setEnabled(false);
} else if (oj.flag.equals("object")) {
treePopupMenu.addSeparator();
JMenuItem newReportMenuItem = new JMenuItem();
newReportMenuItem.setText(MnemonicGenerator.generateMnemonicString(TxtManager.getTxt("VIEW.MAINFRAME.TREE.POPUPMENU.NEWREPORT"), KeyEvent.VK_N));
newReportMenuItem.setMnemonic(KeyEvent.VK_N);
newReportMenuItem.setIcon(ImageManager.getImage(ImageManager.NEW_REPORT_IMAGE));
newReportMenuItem.setActionCommand("New Report");
newReportMenuItem.addActionListener(listener);
treePopupMenu.add(newReportMenuItem);
if (currentObject.isI18n()) {
JMenuItem maintainI18nItem = new JMenuItem();
maintainI18nItem.setText(MnemonicGenerator.generateMnemonicString(TxtManager.getTxt("VIEW.MAINFRAME.MAINTAINI18N"), KeyEvent.VK_M));
maintainI18nItem.setMnemonic(KeyEvent.VK_M);
maintainI18nItem.setIcon(ImageManager.getImage(ImageManager.I18N_IMAGE));
maintainI18nItem.setActionCommand("Maintain I18N");
maintainI18nItem.addActionListener(listener);
treePopupMenu.add(maintainI18nItem);
}
//other
}
} else if (oj.flag.equals("report")) {
DefaultMutableTreeNode parentNode = (DefaultMutableTreeNode)node.getParent();
ObjectInfo parentOj = (ObjectInfo)parentNode.getUserObject();
JMenuItem editReportMenuItem = new JMenuItem();
editReportMenuItem.setText(MnemonicGenerator.generateMnemonicString(TxtManager.getTxt("VIEW.MAINFRAME.TREE.POPUPMENU.EDITREPORT"), KeyEvent.VK_E));
editReportMenuItem.setMnemonic(KeyEvent.VK_E);
editReportMenuItem.setIcon(ImageManager.getImage(ImageManager.EDIT_REPORT_IMAGE));
editReportMenuItem.setActionCommand("Edit Report");
editReportMenuItem.addActionListener(listener);
JMenuItem deleteReportMenuItem = new JMenuItem();
deleteReportMenuItem.setText(MnemonicGenerator.generateMnemonicString(TxtManager.getTxt("VIEW.MAINFRAME.TREE.POPUPMENU.DELETEREPORT"), KeyEvent.VK_D));
deleteReportMenuItem.setMnemonic(KeyEvent.VK_D);
deleteReportMenuItem.setIcon(ImageManager.getImage(ImageManager.DELETE_REPORT_IMAGE));
deleteReportMenuItem.setActionCommand("Delete Report");
deleteReportMenuItem.addActionListener(listener);
JMenuItem dailyReportAddMenuItem = new JMenuItem();
dailyReportAddMenuItem.setText(MnemonicGenerator.generateMnemonicString(TxtManager.getTxt("VIEW.MAINFRAME.TREE.POPUPMENU.DAILYREPORTADD"), KeyEvent.VK_A));
dailyReportAddMenuItem.setMnemonic(KeyEvent.VK_A);
dailyReportAddMenuItem.setIcon(ImageManager.getImage(ImageManager.DAILY_REPORT_ADD_IMAGE));
dailyReportAddMenuItem.setActionCommand("Daily Report Add");
dailyReportAddMenuItem.addActionListener(listener);
JMenuItem dailyReportRemoveMenuItem = new JMenuItem();
dailyReportRemoveMenuItem.setText(MnemonicGenerator.generateMnemonicString(TxtManager.getTxt("VIEW.MAINFRAME.TREE.POPUPMENU.DAILYREPORTREMOVE"), KeyEvent.VK_O));
dailyReportRemoveMenuItem.setMnemonic(KeyEvent.VK_O);
dailyReportRemoveMenuItem.setIcon(ImageManager.getImage(ImageManager.DAILY_REPORT_REMOVE_IMAGE));
dailyReportRemoveMenuItem.setActionCommand("Daily Report Remove");
dailyReportRemoveMenuItem.addActionListener(listener);
JMenuItem renameReportMenuItem = new JMenuItem();
renameReportMenuItem.setText(MnemonicGenerator.generateMnemonicString(TxtManager.getTxt("VIEW.MAINFRAME.TREE.POPUPMENU.RENAMEREPORT"), KeyEvent.VK_R));
renameReportMenuItem.setMnemonic(KeyEvent.VK_R);
renameReportMenuItem.setIcon(ImageManager.getImage(ImageManager.RENAME_REPORT_IMAGE));
renameReportMenuItem.setActionCommand("Rename Report");
renameReportMenuItem.addActionListener(listener);
if (parentOj.flag.equals("dailyReport")) {
treePopupMenu.add(editReportMenuItem);
treePopupMenu.add(renameReportMenuItem);
treePopupMenu.add(deleteReportMenuItem);
treePopupMenu.addSeparator();
treePopupMenu.add(dailyReportRemoveMenuItem);
} else {
treePopupMenu.add(editReportMenuItem);
treePopupMenu.add(renameReportMenuItem);
treePopupMenu.add(deleteReportMenuItem);
treePopupMenu.addSeparator();
treePopupMenu.add(dailyReportAddMenuItem);
}
}
}
tree.setComponentPopupMenu(treePopupMenu);
}
public void updateTree() {
DefaultMutableTreeNode rootNode = new DefaultMutableTreeNode("Root");
DefaultMutableTreeNode bookNode = new DefaultMutableTreeNode(new ObjectInfo(-1,
TxtManager.getTxt("VIEW.MAINFRAME.TREE.ACCOUNTNODE"), "account"));
DefaultMutableTreeNode favoritesNode = new DefaultMutableTreeNode(new ObjectInfo(-1,
TxtManager.getTxt("VIEW.MAINFRAME.TREE.DAILYREPORT"), "dailyReport"));
bookNode.add(favoritesNode);
DAO dao = DAO.getInstance();
dao.query(Resources.SELECT_ALL_CLS_SQL);
ResultSet rs = dao.executeQuery();
try {
while (rs.next()) {
int clsId = rs.getInt("CLSID");
boolean isMyBook = rs.getBoolean("ISMYBOOK");
String str = new String("CLS." + clsId);
DefaultMutableTreeNode objectNode = new DefaultMutableTreeNode(new ObjectInfo(clsId,
TxtManager.getTxt(str), "object"));
//test
if (isMyBook)
bookNode.add(objectNode);
dao.query(Resources.SELECT_CLS_ALL_LAYOUTS_SQL);
dao.setObject(1, clsId);
ResultSet rs1 = dao.executeQuery();
try {
while (rs1.next()) {
str = new String("CL." + clsId + "." + rs1.getInt("LAYOUT"));
DefaultMutableTreeNode layoutNode = new DefaultMutableTreeNode(new ObjectInfo(clsId, rs1.getInt("LAYOUT"), TxtManager.getTxt(str), "report", rs1.getBoolean("ISFAVORITE")));
//fixȥ�����������ڵ�ı����ӽڵ�
// objectNode.add(layoutNode);
if (rs1.getBoolean("ISFAVORITE") == true)
favoritesNode.add((DefaultMutableTreeNode)layoutNode.clone());
}
rs1.close();
} catch (SQLException e) {
}
}
rs.close();
} catch (SQLException e) {
}
DefaultMutableTreeNode bookSettingsNode = new DefaultMutableTreeNode(new ObjectInfo(-1,
TxtManager.getTxt("VIEW.MAINFRAME.TREE.ACCOUNTSETTINGNODE"), "accountSettings"));
dao = DAO.getInstance();
dao.query(Resources.SELECT_ALL_MOD_SQL);
rs = dao.executeQuery();
try {
while (rs.next()) {
String mod = rs.getString("MOD");
DefaultMutableTreeNode moduleNode = new DefaultMutableTreeNode(new ObjectInfo(-1,
TxtManager.getTxt("MOD.".concat(mod)), "module"));
dao.query(Resources.SELECT_MOD_PROPERTIES_SQL);
dao.setString(1, mod);
ResultSet rs1 = dao.executeQuery();
boolean isMyBookSettings = false;
while (rs1.next()) {
isMyBookSettings = true;
int clsId = rs1.getInt("CLSID");
String str = new String("CLS." + clsId);
DefaultMutableTreeNode objectNode = new DefaultMutableTreeNode(new ObjectInfo(clsId,
TxtManager.getTxt(str), "object"));
//test
dao.query(Resources.SELECT_CLS_ALL_LAYOUTS_SQL);
dao.setObject(1, clsId);
ResultSet rs2 = dao.executeQuery();
try {
while (rs2.next()) {
str = new String("CL." + clsId + "." + rs2.getInt("LAYOUT"));
DefaultMutableTreeNode layoutNode = new DefaultMutableTreeNode(new ObjectInfo(clsId, rs2.getInt("LAYOUT"),
TxtManager.getTxt(str), "report", rs2.getBoolean("ISFAVORITE")));
objectNode.add(layoutNode);
}
rs2.close();
} catch (SQLException e) {
}
moduleNode.add(objectNode);
}
if (isMyBookSettings)
bookSettingsNode.add(moduleNode);
rs1.close();
}
rs.close();
} catch (Exception e) {
e.printStackTrace();
}
rootNode.add(bookNode);
rootNode.add(bookSettingsNode);
DefaultTreeModel treeModel = new DefaultTreeModel(rootNode);
tree.setModel(treeModel);
tree.setShowsRootHandles(true);
tree.setRootVisible(false);
tree.getSelectionModel().setSelectionMode(TreeSelectionModel.SINGLE_TREE_SELECTION);
tree.setCellRenderer(new TreeCellRenderer());
tree.addTreeSelectionListener(this);
//Expand all paths
for (int i = 0; i < getTree().getRowCount(); i++) {
getTree().expandPath(getTree().getPathForRow(i));
}
getTree().updateUI();
}
public void updateRightPanelUI() {
if (getTree().getLastSelectedPathComponent() != null) {
DefaultMutableTreeNode node = (DefaultMutableTreeNode)getTree().getLastSelectedPathComponent();
if (node.getUserObject() instanceof ObjectInfo) {
ObjectInfo oj = (ObjectInfo)node.getUserObject();
if (oj.flag.equals("object")) {
setCurrentObject(ClassManager.createClass(oj.clsId));
if (getCurrentObject() != null) {
if(getCurrentObject().getDefCL()==0){
updateObjectView();
}else{
//default report
updateLayoutView(getCurrentObject().getDefCL());
}
}
if(reportViewTable!=null) reportViewTable.enableReportControl(true);
} else if (oj.flag.equals("report")) {
setCurrentObject(ClassManager.createClass(oj.clsId));
updateLayoutView(0);
reportViewTable.enableReportControl(false);
}
}
}
}
public void updateLayoutView(int layoutId) {
rightPanel.removeAll();
//======== splitPane ========
JSplitPane splitPane = new JSplitPane();
splitPane.setOneTouchExpandable(true);
splitPane.setOrientation(JSplitPane.VERTICAL_SPLIT);
splitPane.setDividerLocation(300);
//======== layoutPanel ========
JPanel layoutPanel = new JPanel();
layoutPanel.setBorder(new TitledBorder(TxtManager.getTxt("MAINFRAME.LAYOUT.TITLE")));
layoutPanel.setLayout(new GridBagLayout());
((GridBagLayout)layoutPanel.getLayout()).columnWidths = new int[] {0, 0};
((GridBagLayout)layoutPanel.getLayout()).rowHeights = new int[] {0, 0};
((GridBagLayout)layoutPanel.getLayout()).columnWeights = new double[] {1.0, 1.0E-4};
((GridBagLayout)layoutPanel.getLayout()).rowWeights = new double[] {1.0, 1.0E-4};
//======== scrollPane ========
JScrollPane scrollPane = new JScrollPane();
scrollPane.setPreferredSize(new Dimension(400, 300));
if(layoutId==0){
if (tree.getLastSelectedPathComponent() != null) {
DefaultMutableTreeNode node = (DefaultMutableTreeNode)tree.getLastSelectedPathComponent();
if (node.getUserObject() instanceof ObjectInfo) {
ObjectInfo oj = (ObjectInfo)node.getUserObject();
layoutId = oj.layout;
}
}
}
updateReportViewTable(layoutId);
scrollPane.setViewportView(getReportViewTable());
layoutPanel.add(scrollPane, new GridBagConstraints(0, 0, 1, 1, 0.0, 0.0,
GridBagConstraints.CENTER, GridBagConstraints.BOTH,
new Insets(0, 0, 0, 0), 0, 0));
splitPane.setTopComponent(layoutPanel);
//======== objectPanel ========
JPanel objectPanel = new JPanel();
objectPanel.setBorder(new TitledBorder(TxtManager.getTxt("MAINFRAME.OBJECT.TITLE")));
objectPanel.setLayout(new GridBagLayout());
((GridBagLayout)objectPanel.getLayout()).columnWidths = new int[] {0, 0};
((GridBagLayout)objectPanel.getLayout()).rowHeights = new int[] {0, 0};
((GridBagLayout)objectPanel.getLayout()).columnWeights = new double[] {1.0, 1.0E-4};
((GridBagLayout)objectPanel.getLayout()).rowWeights = new double[] {1.0, 1.0E-4};
//======== scrollPane ========
scrollPane = new JScrollPane();
scrollPane.setPreferredSize(new Dimension(400, 300));
updateObjectLayoutTable();
scrollPane.setViewportView(getObjectLayoutTable());
objectPanel.add(scrollPane, new GridBagConstraints(0, 0, 1, 1, 0.0, 0.0,
GridBagConstraints.CENTER, GridBagConstraints.BOTH,
new Insets(0, 0, 0, 0), 0, 0));
splitPane.setBottomComponent(objectPanel);
rightPanel.add(splitPane, new GridBagConstraints(0, 0, 1, 1, 0.0, 0.0,
GridBagConstraints.CENTER, GridBagConstraints.BOTH,
new Insets(0, 0, 5, 0), 0, 0));
rightPanel.updateUI();
}
public void updateObjectView() {
rightPanel.removeAll();
//specify
if (currentObject instanceof BudgetSettingClass) {
initialBudgetTablePopMenu();
} else if (regAnaly != null) {
initialRegTablePopMenu(regAnaly);
} else if (currentObject instanceof RegClass) {
initialRegTablePopMenu();
}
// else if (currentObject instanceof PartnerClass) {
// initialPartnerTablePopMenu();
// }
else {
initialObjectTablePopMenu();
}
//======== informationPanel ========
JPanel informationPanel = new JPanel();
informationPanel.setLayout(new FlowLayout(FlowLayout.RIGHT));
//Specify
if ( (regAnaly != null) && (regAnaly.equals("Clear")) ) {
JButton setClearedButton = new JButton();
setClearedButton.setText(TxtManager.getTxt("REG.SETCLEARED"));
setClearedButton.setIcon(ImageManager.getImage(ImageManager.SET_CLEARED_IMAGE));
setClearedButton.setActionCommand("Set Cleared");
setClearedButton.addActionListener(getListener());
informationPanel.add(setClearedButton);
} else if ( (regAnaly != null) && (regAnaly.equals("Un Clear")) ) {
JButton setUnClearedButton = new JButton();
setUnClearedButton.setText(TxtManager.getTxt("REG.SETUNCLEARED"));
setUnClearedButton.setIcon(ImageManager.getImage(ImageManager.SET_UNCLEARED_IMAGE));
setUnClearedButton.setActionCommand("Set Un Cleared");
setUnClearedButton.addActionListener(getListener());
informationPanel.add(setUnClearedButton);
} else {
addObjectButton = new JButton(TxtManager.getTxt("MAINFRAME.ADDROW.TITLE"), ImageManager.getImage(ImageManager.TABLE_ROW_ADD_IMAGE));
addObjectButton.setActionCommand("Object Add");
addObjectButton.addActionListener(getListener());
informationPanel.add(addObjectButton);
//specify, disabled addObjectButton
if (currentObject instanceof BudgetClass)
addObjectButton.setEnabled(false);
editObjectButton = new JButton(TxtManager.getTxt("MAINFRAME.EDITROW.TITLE"), ImageManager.getImage(ImageManager.TABLE_ROW_EDIT_IMAGE));
editObjectButton.setActionCommand("Object Edit");
editObjectButton.setEnabled(false);
editObjectButton.addActionListener(getListener());
informationPanel.add(editObjectButton);
deleteObjectButton = new JButton(TxtManager.getTxt("MAINFRAME.DELETEROW.TITLE"), ImageManager.getImage(ImageManager.TABLE_ROW_DELETE_IMAGE));
deleteObjectButton.setActionCommand("Object Delete");
deleteObjectButton.setEnabled(false);
deleteObjectButton.addActionListener(getListener());
informationPanel.add(deleteObjectButton);
//specify, disabled deleteObjectButton
if ( (currentObject instanceof NameSpaceClass) || (currentObject instanceof TaxDepClass)
|| (currentObject instanceof UserClass) )
deleteObjectButton.setEnabled(false);
}
/*rightPanel.add(informationPanel, new GridBagConstraints(0, 1, 1, 1, 0.0, 0.0,
GridBagConstraints.CENTER, GridBagConstraints.BOTH,
new Insets(0, 0, 5, 0), 0, 0)); */
//======== objectTableSplitPane ========
objectTableSplitPane = new JSplitPane();
objectTableSplitPane.setOneTouchExpandable(true);
objectTableSplitPane.setOrientation(JSplitPane.VERTICAL_SPLIT);
objectTableSplitPane.setDividerLocation(300);
//======== topPanel ========
JPanel topPanel = new JPanel();
topPanel.setBorder(new TitledBorder(TxtManager.getTxt("MAINFRAME.TOPPANEL.TITLE")));
topPanel.setLayout(new GridBagLayout());
((GridBagLayout)topPanel.getLayout()).columnWidths = new int[] {0, 0};
((GridBagLayout)topPanel.getLayout()).rowHeights = new int[] {0, 0};
((GridBagLayout)topPanel.getLayout()).columnWeights = new double[] {1.0, 1.0E-4};
((GridBagLayout)topPanel.getLayout()).rowWeights = new double[] {1.0, 1.0E-4};
//======== scrollPane ========
JScrollPane scrollPane = new JScrollPane();
scrollPane.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
//objectTable
objectTable = new JXTable();
objectTable.setEditable(false);
objectTable.setColumnControlVisible(false);
objectTable.setHorizontalScrollEnabled(true);
objectTable.setSortable(true);
objectTable.addMouseListener(listener);
// fix
//specify
if (currentObject instanceof BudgetSettingClass) {
getObjectTable().setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);
} else if (regAnaly != null) {
getObjectTable().setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);
} else if (currentObject instanceof RegClass) {
getObjectTable().setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);
}
else {
getObjectTable().setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
}
ListSelectionModel rowSM = getObjectTable().getSelectionModel();
rowSM.addListSelectionListener(new ListSelectionListener() {
public void valueChanged(ListSelectionEvent e) {
updateObjectButton();
//updatePreviewPane();
updateObjectChildTable();
}
});
for (int i = 0; i < getObjectTable().getColumnModel().getColumnCount(); i++) {
objectTable.getColumnExt(i).setPrototypeValue(objectTable.getValueAt(1, i));
}
objectTable.setComponentPopupMenu(objectTablePopupMenu);
//updateTable();
scrollPane.setViewportView(getObjectTable());
updateObjectViewTable();
topPanel.add(objectViewTable, new GridBagConstraints(0, 0, 1, 1, 0.0, 0.0,
GridBagConstraints.CENTER, GridBagConstraints.BOTH,
new Insets(0, 0, 0, 0), 0, 0));
/*topPanel.add(scrollPane, new GridBagConstraints(0, 0, 1, 1, 0.0, 0.0,
GridBagConstraints.CENTER, GridBagConstraints.BOTH,
new Insets(0, 0, 0, 0), 0, 0));*/
objectTableSplitPane.setTopComponent(topPanel);
//======== bottomPanel ========
JPanel bottomPanel = new JPanel();
bottomPanel.setBorder(new TitledBorder(TxtManager.getTxt("MAINFRAME.BOTTOMPANEL.TITLE")));
bottomPanel.setLayout(new GridBagLayout());
((GridBagLayout)bottomPanel.getLayout()).columnWidths = new int[] {0, 0};
((GridBagLayout)bottomPanel.getLayout()).rowHeights = new int[] {0, 0};
((GridBagLayout)bottomPanel.getLayout()).columnWeights = new double[] {1.0, 1.0E-4};
((GridBagLayout)bottomPanel.getLayout()).rowWeights = new double[] {1.0, 1.0E-4};
//======== scrollPane1 ========
JScrollPane scrollPane1 = new JScrollPane();
scrollPane1.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
objectChildTable.setEditable(false);
objectChildTable.setColumnControlVisible(false);
objectChildTable.setHorizontalScrollEnabled(true);
objectChildTable.setSortable(true);
objectChildTable.setHighlighters(new HighlighterPipeline(
new Highlighter[]{ AlternateRowHighlighter.classicLinePrinter }));
objectChildTable.getHighlighters().addHighlighter(
new RolloverHighlighter(Color.BLACK, Color.WHITE ));
//previewPane
previewPane = new JEditorPane();
previewPane.setEditable(false);
scrollPane1.setViewportView(objectChildTable);
bottomPanel.add(scrollPane1, new GridBagConstraints(0, 0, 1, 1, 0.0, 0.0,
GridBagConstraints.CENTER, GridBagConstraints.BOTH,
new Insets(0, 0, 0, 0), 0, 0));
objectTableSplitPane.setBottomComponent(bottomPanel);
rightPanel.add(objectTableSplitPane, new GridBagConstraints(0, 0, 1, 1, 0.0, 0.0,
GridBagConstraints.CENTER, GridBagConstraints.BOTH,
new Insets(0, 0, 5, 0), 0, 0));
rightPanel.updateUI();
//specify
regAnaly = null;
}
//Will Be updated, now some values are not equal to the object.values.
//public void updateObjectLayoutTable() {
/*if (getLayoutTable() != null) {
Vector columnDatas = new Vector();
int selectedRowNumber = getLayoutTable().getSelectedRow();
if (selectedRowNumber != -1) {
ReportTableModel model = (ReportTableModel)getLayoutTable().getModel();
selectedRowNumber = getLayoutTable().convertRowIndexToModel(selectedRowNumber);
Row selectedRow = (Row)model.getValueAt(selectedRowNumber, model.getColumnCount() - 1);
System.err.println("selectedRow = " + selectedRow);
ObjectTableModel otModel = (ObjectTableModel)getObjectLayoutTable().getModel();
otModel.dataValues.removeAllElements();
Iterator childRowsIter = selectedRow.getRowSet().getRows().iterator();
while (childRowsIter.hasNext()) {
Row childRow = (Row)childRowsIter.next();
Vector rowDatas = new Vector();
Iterator columnIter = currentObject.getColumns().iterator();
while (columnIter.hasNext()) {
Column column = (Column)columnIter.next();
rowDatas.add(ObjectUtil.findNewCell(childRow, column.getTableName(),
column.getColumnName()).getColumnValue());
}
rowDatas.add(childRow);
otModel.dataValues.add(rowDatas);
}
otModel.fireTableDataChanged();
}
}*/
// }
private void initMenuBar() {
menuBar = MenuManager.createMenu(listener);
setJMenuBar(menuBar);
//fix ���ӿ�ݼ�
// ft! add
KeyUtil.add("F5", getRootPane(),new AbstractAction() {
public void actionPerformed(ActionEvent e) {
listener.actionPerformed(new ActionEvent("no src",
ActionEvent.ACTION_PERFORMED, "Object Add"));
}
});
KeyUtil.add("DELETE", getRootPane(),new AbstractAction() {
public void actionPerformed(ActionEvent e) {
listener.actionPerformed(new ActionEvent("no src",ActionEvent.ACTION_PERFORMED, "Object Delete"));
}
});
KeyUtil.add("ESCAPE", getRootPane(), new AbstractAction() {
public void actionPerformed(ActionEvent e) {
listener.actionPerformed(new ActionEvent("no src",ActionEvent.ACTION_PERFORMED, "Exit"));
}
});
}
private void initToolBar() {
toolBar = new JToolBar();
toolBar.setBorderPainted(false);
toolBar.setFloatable(false);
JButton regCommandButton = new JButton();
regCommandButton.setIcon(ImageManager.getImage(ImageManager.REG_COMMAND_IMAGE));
regCommandButton.setText(MnemonicGenerator.generateMnemonicString(TxtManager.getTxt("VIEW.MAINFRAME.TOOLBAR.REGBUTTON"), KeyEvent.VK_R));
regCommandButton.setMnemonic(KeyEvent.VK_R);
regCommandButton.setActionCommand("Show Register");
regCommandButton.addActionListener(listener);
regCommandButton.setVerticalTextPosition(SwingConstants.BOTTOM);
regCommandButton.setHorizontalTextPosition(SwingConstants.CENTER);
toolBar.add(regCommandButton);
JButton correspondenceCommandButton = new JButton();
correspondenceCommandButton.setIcon(ImageManager.getImage(ImageManager.CORRESPONDENCE_COMMAND_IMAGE));
correspondenceCommandButton.setText(MnemonicGenerator.generateMnemonicString(TxtManager.getTxt("VIEW.MAINFRAME.TOOLBAR.CORRESPONDENCEBUTTTON"), KeyEvent.VK_C));
correspondenceCommandButton.setMnemonic(KeyEvent.VK_C);
correspondenceCommandButton.setActionCommand("Show Correspondence");
correspondenceCommandButton.addActionListener(listener);
correspondenceCommandButton.setVerticalTextPosition(SwingConstants.BOTTOM);
correspondenceCommandButton.setHorizontalTextPosition(SwingConstants.CENTER);
toolBar.add(correspondenceCommandButton);
JButton taxCommandButton = new JButton();
taxCommandButton.setIcon(ImageManager.getImage(ImageManager.TAX_COMMAND_IMAGE));
taxCommandButton.setText(MnemonicGenerator.generateMnemonicString(TxtManager.getTxt("VIEW.MAINFRAME.TOOLBAR.TAXBUTTON"), KeyEvent.VK_T));
taxCommandButton.setMnemonic(KeyEvent.VK_T);
taxCommandButton.setActionCommand("Show Tax");
taxCommandButton.addActionListener(listener);
taxCommandButton.setVerticalTextPosition(SwingConstants.BOTTOM);
taxCommandButton.setHorizontalTextPosition(SwingConstants.CENTER);
toolBar.add(taxCommandButton);
JButton budgetCommandButton = new JButton();
budgetCommandButton.setIcon(ImageManager.getImage(ImageManager.BUDGET_COMMAND_IMAGE));
budgetCommandButton.setText(MnemonicGenerator.generateMnemonicString(TxtManager.getTxt("VIEW.MAINFRAME.TOOLBAR.BUDGETBUTTON"), KeyEvent.VK_B));
budgetCommandButton.setMnemonic(KeyEvent.VK_B);
budgetCommandButton.setActionCommand("Show Budget");
budgetCommandButton.addActionListener(listener);
budgetCommandButton.setVerticalTextPosition(SwingConstants.BOTTOM);
budgetCommandButton.setHorizontalTextPosition(SwingConstants.CENTER);
toolBar.add(budgetCommandButton);
toolBar.addSeparator();
JButton currencyEvaluationButton = new JButton();
currencyEvaluationButton.setIcon(ImageManager.getImage(ImageManager.EVALUATION_IMAGE));
currencyEvaluationButton.setText(MnemonicGenerator.generateMnemonicString(TxtManager.getTxt("VIEW.CURRENCYEVALUATION.TITLE"), KeyEvent.VK_U));
currencyEvaluationButton.setMnemonic(KeyEvent.VK_U);
currencyEvaluationButton.setActionCommand("Currency Evaluation");
currencyEvaluationButton.addActionListener(listener);
currencyEvaluationButton.setVerticalTextPosition(SwingConstants.BOTTOM);
currencyEvaluationButton.setHorizontalTextPosition(SwingConstants.CENTER);
toolBar.add(currencyEvaluationButton);
toolBar.addSeparator();
JButton settingsCommandButton = new JButton();
settingsCommandButton.setIcon(ImageManager.getImage(ImageManager.SETTINGS_BIG_IMAGE));
settingsCommandButton.setText(MnemonicGenerator.generateMnemonicString(TxtManager.getTxt("VIEW.MAINFRAME.TOOLBAR.SETTINGSBUTTON"), KeyEvent.VK_E));
settingsCommandButton.setMnemonic(KeyEvent.VK_E);
settingsCommandButton.setActionCommand("Settings");
settingsCommandButton.addActionListener(listener);
settingsCommandButton.setVerticalTextPosition(SwingConstants.BOTTOM);
settingsCommandButton.setHorizontalTextPosition(SwingConstants.CENTER);
toolBar.add(settingsCommandButton);
JButton websiteCommandButton = new JButton();
websiteCommandButton.setIcon(ImageManager.getImage(ImageManager.WEBSITE_COMMAND_IMAGE));
websiteCommandButton.setText(TxtManager.getTxt("VIEW.MAINFRAME.TOOLBAR.WEBSITEBUTTON"));
websiteCommandButton.setActionCommand("Website Command");
websiteCommandButton.addActionListener(listener);
websiteCommandButton.setVerticalTextPosition(SwingConstants.BOTTOM);
websiteCommandButton.setHorizontalTextPosition(SwingConstants.CENTER);
toolBar.add(websiteCommandButton);
}
private void initComponents() {
addWindowListener(getListener());
//======== this ========
Container contentPane = getContentPane();
contentPane.setLayout(new GridBagLayout());
((GridBagLayout)contentPane.getLayout()).columnWidths = new int[] {0, 0, 0};
((GridBagLayout)contentPane.getLayout()).rowHeights = new int[] {0, 0, 0, 0};
((GridBagLayout)contentPane.getLayout()).columnWeights = new double[] {0.0, 1.0, 1.0E-4};
((GridBagLayout)contentPane.getLayout()).rowWeights = new double[] {0.0, 1.0, 0.0, 1.0E-4};
//popMenus
initialObjectTablePopMenu();
initialObjectLayoutTablePopMenu();
//toolBar
initToolBar();
contentPane.add(getToolBar(), new GridBagConstraints(0, 0, 2, 1, 0.0, 0.0,
GridBagConstraints.CENTER, GridBagConstraints.BOTH,
new Insets(0, 0, 5, 0), 0, 0));
//======== splitPane ========
{
splitPane = new JSplitPane();
splitPane.setOneTouchExpandable(true);
//======== leftPanel ========
leftPanel = new JPanel();
leftPanel.setLayout(new GridBagLayout());
((GridBagLayout)leftPanel.getLayout()).columnWidths = new int[] {0, 0};
((GridBagLayout)leftPanel.getLayout()).rowHeights = new int[] {0, 0, 0};
((GridBagLayout)leftPanel.getLayout()).columnWeights = new double[] {1.0, 1.0E-4};
((GridBagLayout)leftPanel.getLayout()).rowWeights = new double[] {1.0, 0.0, 1.0E-4};
//======== treeScrollPane ========
JScrollPane treeScrollPane = new JScrollPane();
treeScrollPane.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
treeScrollPane.setPreferredSize(new Dimension(300, 363));
//---- tree ----
tree = new JTree();
tree.addMouseListener(listener);
updateTree();
treeScrollPane.setViewportView(getTree());
leftPanel.add(treeScrollPane, new GridBagConstraints(0, 0, 1, 1, 0.0, 0.0,
GridBagConstraints.CENTER, GridBagConstraints.BOTH,
new Insets(0, 0, 0, 0), 0, 0));
splitPane.setLeftComponent(leftPanel);
//======== rightPanel ========
rightPanel = new JPanel();
rightPanel.setLayout(new GridBagLayout());
((GridBagLayout)rightPanel.getLayout()).columnWidths = new int[] {0, 0};
((GridBagLayout)rightPanel.getLayout()).rowHeights = new int[] {0, 0};
((GridBagLayout)rightPanel.getLayout()).columnWeights = new double[] {1.0, 1.0E-4};
((GridBagLayout)rightPanel.getLayout()).rowWeights = new double[] {1.0, 1.0E-4};
updateRightPanelUI();
splitPane.setRightComponent(rightPanel);
}
contentPane.add(splitPane, new GridBagConstraints(0, 1, 2, 1, 0.0, 0.0,
GridBagConstraints.CENTER, GridBagConstraints.BOTH,
new Insets(0, 0, 5, 0), 0, 0));
//======== informationPanel ========
JPanel informationPanel = new JPanel();
informationPanel.setLayout(new FlowLayout());
contentPane.add(informationPanel, new GridBagConstraints(1, 2, 1, 1, 0.0, 0.0,
GridBagConstraints.CENTER, GridBagConstraints.BOTH,
new Insets(0, 0, 0, 0), 0, 0));
setTitle(TxtManager.getTxt("VIEW.APPLICATION.TITLE"));
setIconImage(ImageManager.getImage(ImageManager.REALCIX_APP_IAMGE).getImage());
setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
setSize(this.getMaximumSize());
setExtendedState(JFrame.MAXIMIZED_BOTH);
setResizable(true);
setVisible(true);
}
// class ReportTableModel extends DefaultTableModel {
//
// private Vector names;
// private Vector dataValues;
//
// public ReportTableModel(BaseClass object, int layout) {
// String sql = null;
// String csql = null;
// DAO dao = DAO.getInstance();
// dao.query(Resources.SELECT_CL_SQL);
// dao.setInt(1, object.getClsId());
// dao.setInt(2, layout);
// ResultSet rs = dao.executeQuery();
// try {
// if (rs.next()) {
// sql = rs.getString("SQL");
// }
// rs.close();
// } catch (Exception e) {
// e.printStackTrace();
// }
// if ( (sql != null) && (!sql.trim().equals("")) ) {
// dao.query(sql);
// rs = dao.executeQuery();
// names = new Vector();
// dataValues = new Vector();
// try {
// ResultSetMetaData rsmd = rs.getMetaData();
// for (int i = 1; i <= rsmd.getColumnCount(); i++) {
// String tableName = rsmd.getTableName(i);
// String columnName = rsmd.getColumnName(i);
// Column column = ObjectUtil.findColumn(currentObject, tableName, columnName);
// System.err.println("tableName = " + tableName + " --- columnName = " + columnName);
// if (column != null) {
// names.add(column);
// } else {
// names.add(rsmd.getColumnName(i));
// }
// }
// names.add("row");
// while (rs.next()) {
// Vector rowDatas = new Vector();
// for (int i = 1; i <= rsmd.getColumnCount(); i++) {
// Object obj = rs.getObject(i);
// if (obj instanceof Double) {
// rowDatas.add(CurrencyPlugin.getFormatedDouble((Double)obj));
// } else {
// rowDatas.add(obj);
// }
// }
// Vector pkTableNames = new Vector();
// Vector pkColumnNames = new Vector();
// Vector pkValues = new Vector();
// for (int i = 1; i <= rsmd.getColumnCount(); i++) {
// String tableName = rsmd.getTableName(i);
// String columnName = rsmd.getColumnName(i);
// Object obj = rs.getObject(i);
// Column column = ObjectUtil.findColumn(currentObject, tableName, columnName);
// if ( (column != null) ) {
// pkTableNames.add(tableName);
// pkColumnNames.add(columnName);
// pkValues.add(obj);
// }
// }
// Iterator rowsIter = object.getRows().iterator();
// while (rowsIter.hasNext()) {
// Iterator pkTableNamesIter = pkTableNames.iterator();
// Iterator pkColumnNamesIter = pkColumnNames.iterator();
// Iterator pkValuesIter = pkValues.iterator();
// boolean result = true;
// Row tempRow = (Row)rowsIter.next();
// tempRow.print();
// while (pkTableNamesIter.hasNext()) {
// String tableName = (String)pkTableNamesIter.next();
// String columnName = (String)pkColumnNamesIter.next();
// Object obj = pkValuesIter.next();
// System.err.println(tableName + " --- " + columnName + " ----- " + obj + " ???????? " +
// ObjectUtil.findNewCell(tempRow, tableName, columnName).getColumnValue());
// if ( (ObjectUtil.findNewCell(tempRow, tableName, columnName).getColumnValue() != obj) &&
// (!ObjectUtil.findNewCell(tempRow, tableName, columnName).getColumnValue().equals(obj)) ) {
// System.err.println(tableName + " --- " + columnName + " ----- " + obj + " ????******? " +
// ObjectUtil.findNewCell(tempRow, tableName, columnName).getColumnValue());
// result = false;
// break;
// }
// }
// if (result) {
// rowDatas.add(tempRow);
// break;
// }
// }
// dataValues.add(rowDatas);
// }
// } catch (Exception e) {
// e.printStackTrace();
// }
// setDataVector(dataValues, names);
// }
// }
//
// public Class getColumnClass(int index) {
// return names.get(index).getClass();
// }
//
// public Object getColumn(int index) {
// return names.get(index);
// }
//
// }
class ColumnData {
public Column column;
public Object data;
public ColumnData(Column column, Object data) {
this.column = column;
this.data = data;
}
}
class ObjectTableModel extends DefaultTableModel {
private Vector names;
private Vector dataValues;
public ObjectTableModel(BaseClass object) {
names = new Vector();
dataValues = new Vector();
Iterator columnIter = object.getColumns().iterator();
while (columnIter.hasNext()) {
Column column = (Column)columnIter.next();
if (column.isIndexField())
names.add(column);
}
this.setDataVector(dataValues, names);
}
}
class ImageRenderer extends JLabel implements TableCellRenderer {
public ImageRenderer(String text, ImageIcon icon) {
super(text, icon, JLabel.CENTER);
}
public Component getTableCellRendererComponent(
JTable table, Object color,
boolean isSelected, boolean hasFocus,
int row, int column) {
setBorder(new EtchedBorder());
return this;
}
}
public BaseClass getCurrentObject() {
return currentObject;
}
public JXTable getObjectTable() {
return objectTable;
}
public JTree getTree() {
return tree;
}
public void setCurrentObject(BaseClass currentObject) {
this.currentObject = currentObject;
}
public JToolBar getToolBar() {
return toolBar;
}
public MainListener getListener() {
return listener;
}
public String getRegAnaly() {
return regAnaly;
}
public void setRegAnaly(String regAnaly) {
this.regAnaly = regAnaly;
}
public JXTable getLayoutTable() {
return layoutTable;
}
public JXTable getObjectLayoutTable() {
return objectLayoutTable;
}
public XTable getObjectViewTable() {
return objectViewTable;
}
public XTable getReportViewTable() {
return reportViewTable;
}
}