Frame example

/**
 * Created on Jan 22, 2007
 
*/

package  com.jinfonet.loganalyzer.ui.viewers;

import  guitools.swing.component.customsplit.CustomSplitPane;
import  guitools.swing.component.menu.StatusChangeListener;
import  guitools.swing.dialog.JCommonFrame;

import  java.awt.BorderLayout;
import  java.awt.Dimension;
import  java.awt.event.ActionEvent;
import  java.awt.event.ActionListener;
import  java.awt.event.WindowAdapter;
import  java.awt.event.WindowEvent;
import  java.sql.ResultSet;
import  java.util.HashMap;
import  java.util.Vector;

import  javax.swing.JButton;
import  javax.swing.JComboBox;
import  javax.swing.JLabel;
import  javax.swing.JList;
import  javax.swing.JPanel;
import  javax.swing.JScrollPane;
import  javax.swing.JSplitPane;
import  javax.swing.JTabbedPane;
import  javax.swing.JTextField;
import  javax.swing.JViewport;
import  javax.swing.SwingConstants;
import  javax.swing.WindowConstants;
import  javax.swing.event.ChangeEvent;
import  javax.swing.event.ChangeListener;

import  com.jinfonet.loganalyzer.logAnalyzeTool.manager.DataBaseManager;
import  com.jinfonet.loganalyzer.logAnalyzeTool.util.PerformanceMessageInfo;

import  com.jinfonet.designer.util.JDesgResource;
import  com.jinfonet.loganalyzer.db.DBConnection;


/**
 * 
@author gengwei.zheng
 
*/

public   class  LogAnalyzerFrame  extends  JCommonFrame  implements  StatusChangeListener
{
    
/**
     *  serialVersionUID = 8903980581711306310L
     
*/

    
private static final long serialVersionUID = 8903980581711306310L;
    
    
private static String DEFAULT_TITLE = JDesgResource.getMessage("LA_DEFAULT_TITLE");
    
    
private static LogAnalyzerFrame logAnalyzerFrame;
    
private ParseLogAnalyzerMenu logAnalyzerMenu;
    
private LogAnalyzerToolBar toolBar;
    
private LogAnalyzerStatusBar statusBar;
    
private LogAnalyzerFrameListener listener;
    
    
private DBConnection db = DBConnection.getDatabase();
    
private DataTable currentPageDatatable;
    
    
private JTabbedPane dataPane;
    
private JComboBox columnCbBox;
    
private JList detailViewList;
    
private JButton searchBtn;
    
private JTextField searchField;
        
    
public LogAnalyzerFrame()
    
{
        
this(DEFAULT_TITLE);
    }


    
public LogAnalyzerFrame(String title) 
    
{
        
super(title);
        setIconImage(JDesgResource.getIcon(
"logo").getImage());  
        init();        
        setDefaultCloseOperation(WindowConstants.DO_NOTHING_ON_CLOSE);
        addWindowListener(
                
new WindowAdapter()
                
{
                    
public void windowClosing(WindowEvent e) 
                    
{
                        
if ( listener != null )
                        
{
                            listener.closing(logAnalyzerFrame);
                        }

                    }

                }
);
    }

    
    
public void setFrameListner(LogAnalyzerFrameListener listener)
    
{
        
this.listener = listener;
    }

    
    
synchronized public static LogAnalyzerFrame getFrame()
    
{
        
if ( logAnalyzerFrame == null )
        
{
            logAnalyzerFrame 
= new LogAnalyzerFrame();
        }

        
return logAnalyzerFrame;
    }

    
    
private void init()
    
{   
        logAnalyzerMenu 
= new ParseLogAnalyzerMenu(JDesgResource.readComponent("LogAnalyzerMenu"));
        toolBar 
= new LogAnalyzerToolBar(logAnalyzerMenu);
        statusBar 
= new LogAnalyzerStatusBar();
                
        logAnalyzerMenu.addStatusChangeListener(
this);
        setJMenuBar(logAnalyzerMenu.getMenuBar());
                        
        logAnalyzerMenu.setSelected(
"toolbar"true);
        logAnalyzerMenu.setSelected(
"statusbar"true);
        
        JLabel searchLabel 
= new JLabel(JDesgResource.getMessage("SEARCH_LABEL"));
        Dimension size 
= new Dimension(10020);
        columnCbBox 
= new JComboBox();
        columnCbBox.setPreferredSize(size);
        searchField 
= new JTextField();
        searchField.setPreferredSize(size);
        searchBtn 
= new JButton("Search");
        searchBtn.setPreferredSize(
new Dimension(8020));
        
        JPanel searchPanel 
= new JPanel();
        searchPanel.add(searchLabel);
        searchPanel.add(columnCbBox);
        searchPanel.add(searchField);
        searchPanel.add(searchBtn);
        
        toolBar.add(searchPanel, BorderLayout.EAST);
        searchBtn.addActionListener(
                
new ActionListener() 
                
{
                    
public void actionPerformed(ActionEvent e) 
                    
{
                        String selectInfo 
= searchField.getText();
                        String selectCol 
= (String) columnCbBox.getSelectedItem();
                        
try 
                        
{
                            String tableName 
= currentPageDatatable.getTableName();
                            ResultSet res 
= null;
                            DataBaseManager manager 
= new DataBaseManager();
                            manager.init();
                            res 
= manager.getUsedInfoFromCol(selectInfo, selectCol,    tableName);
                            currentPageDatatable.refetchData(res);
                        }
 
                        
catch (Exception e1) 
                        
{
                            
                        }

                    }

                }
);
        
        DetailViewListModel model 
= new DetailViewListModel();
        
        detailViewList 
= new JList(model);
        detailViewList.setCellRenderer(
new DetailViewListRenderer());
        JScrollPane pane 
= new JScrollPane();
        pane.setViewportView(detailViewList);
        
        dataPane 
= new JTabbedPane();
        dataPane.setTabPlacement(SwingConstants.LEFT);
//        refetchAllTableData();        
        CustomSplitPane content = new CustomSplitPane(JSplitPane.VERTICAL_SPLIT, dataPane, pane, CustomSplitPane.RIGHTORBOTTOM);
        content.setDividerSize(
8);
        content.setDividerLocation(
300);
        
        getContentPane().add(toolBar, BorderLayout.NORTH);
        getContentPane().add(statusBar, BorderLayout.SOUTH);
        getContentPane().add(content, BorderLayout.CENTER);
    }

        
    
public ParseLogAnalyzerMenu getLogAnalyzerMenu()
    
{
        
return logAnalyzerMenu;
    }

    
    
public void setEnabled(String id, boolean isEnabled)
    
{
        logAnalyzerMenu.setEnabled(id, isEnabled);
    }

        
    
public void setToolbar(boolean isVisible)
    
{
        toolBar.setVisible(isVisible);
    }

    
    
public void setStatusbar(boolean isVisible)
    
{
        statusBar.setVisible(isVisible);
    }

    
    
public void setStatusText(String arg0) 
    
{
        
    }

    
    
public DataTable getDataTable()
    
{
        
return currentPageDatatable;
    }

    
    
public JList getDetailViewList()
    
{
        
return detailViewList;
    }

    
    
public JTabbedPane getDataPane()
    
{
        
return dataPane;
    }

    
    
public void setTotalLogsStatus(int totalLogs)
    
{
        statusBar.setTotalLogs(totalLogs);
    }

    
    
public void setFilteredLogsStatus(int filteredLogs)
    
{
        statusBar.setFilteredLogs(filteredLogs);
    }

        
    
public void refetchAllTableData()
    
{
        
try{
        dataPane.removeAll();
        }
catch(Throwable e){
            e.printStackTrace(); 
        }

        DataTable table 
= null;
        Vector tableNames 
= db.getTableNames();
        String allTableNames 
= "@";
        
for(int i = 0;i<PerformanceMessageInfo.PERFORMANCE_VIEW_TABLES.length;i++){
            allTableNames 
= allTableNames + PerformanceMessageInfo.PERFORMANCE_VIEW_TABLES[i] +"@";
        }

        
for (int i = 0; i < tableNames.size(); i++)
        
{
            String tableName 
= tableNames.get(i).toString();
            
if(allTableNames.indexOf(tableName) != -1){
                ResultSet rs 
= null;
                
try{
                  rs 
= db.getTableResultSet(tableName);
                }
catch(Throwable e){
                    System.out.println(tableName);
                    e.printStackTrace(); 
                }

                table 
= new DataTable(rs);
                table.setTableName(tableName);
                
if (i == 0)
                    currentPageDatatable 
= table;
                JScrollPane scrollPane 
= new JScrollPane(table);
                dataPane.addTab(tableName, scrollPane);
            }

        }

        dataPane.addChangeListener(
                
new ChangeListener()
                
{
                    
public void stateChanged(ChangeEvent e) 
                    
{
                        updateView();
                    }

                }
);
    }

    
    
public void refetchCurrentTableData()
    
{
        ResultSet rs 
= db.getTableResultSet(currentPageDatatable.getTableName());
        currentPageDatatable.refetchData(rs);
    }

    
    
private void updateSearchColumn()
    
{
        
if (columnCbBox.getItemCount() != 0)
        
{
            columnCbBox.removeAllItems();
        }

        
        
for (int i = 0; i < currentPageDatatable.getTableModel().getColumnNames().size(); i++)
        
{
            columnCbBox.addItem(currentPageDatatable.getTableModel().getColumnNames().get(i));
        }

    }

    
    
public void filter(int index, HashMap data)
    
{
        
// TODO do filter
        dataPane.setSelectedIndex(index);
        updateView();
        doFilter(data);
    }

    
private void doFilter(HashMap data){
        String tableName 
= currentPageDatatable.getTableName();
        ResultSet res 
= null;
        DataBaseManager manager 
= new DataBaseManager();
        manager.init();
        StringBuffer query 
= new StringBuffer();
        query.append(
"SELECT * FROM " + tableName + " WHERE ");
        Object keys[] 
= data.keySet().toArray();
        
for(int i =0;i<keys.length-1 ;i++){
            query.append((String)keys[i]
+" LIKE '%"+data.get(keys[i])+"%'"+" AND ");
        }

        query.append((String)keys[keys.length
-1]+" LIKE '%"+data.get(keys[keys.length -1])+"%'");
        res 
= manager.getQueryResultSet(query.toString());
        currentPageDatatable.refetchData(res);
    }

    
private void updateView()
    
{
        
if(dataPane.getSelectedComponent() == null){
            
return;
        }

        JViewport view 
= ((JScrollPane)dataPane.getSelectedComponent()).getViewport();
        currentPageDatatable 
= (DataTable)view.getComponents()[0];
        statusBar.setTotalLogs(currentPageDatatable.getTableModel().getTotalLogs());
        statusBar.setFilteredLogs(currentPageDatatable.getTableModel().getFilteredLogs());
        updateSearchColumn();
    }

}

 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值