Package realcix20.guis.views

Source Code of realcix20.guis.views.MainView

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

Related Classes of realcix20.guis.views.MainView

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.