⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mainwindow.java

📁 Libgist is an implementation of the Generalized Search Tree, a template index structure that makes i
💻 JAVA
📖 第 1 页 / 共 3 页
字号:
// MainWindow.java// Copyright (c) 1998, Regents of the University of California// $Id: MainWindow.java,v 1.3 1999/12/14 06:07:34 marcel Exp $//import com.sun.java.swing.*;import javax.swing.*;import javax.swing.event.*;//import com.sun.java.swing.event.*;//import com.sun.java.swing.preview.*;import java.awt.event.*;import java.awt.*;import java.io.*;import java.lang.*;import java.io.*;import java.util.*;/* * MainWindow - main amdb GUI window * * Contains menus, console window, etc. */public class MainWindow extends JFrame //implements WindowListener{// GUI states w.r.t. status of menu itemsstatic final int INITSTATE = 0;static final int IDXOPENSTATE = 1;static final int DEBUGSTATE = 2;static final int ANLOPENSTATE = 3;static final int STOPSTATE = 4;// various stuffJDesktopPane desktop;public ConsoleWindow consoleFrame; // our text output windowboolean scriptWasCancelled; // set by 'Stop' button, read by execution threadint guiState; // one of the above; determines which menu items are enabledString idxName; // filename of currently open indexOpThread opThread; // thread to execute libgist operations (debugging fcts in separate thread)Workload wkld; // profile we're currently working withWkldStatsDlg wkldStatsDlg;SplitStatsDlg splitStatsDlg;PenaltyStatsDlg penaltyStatsDlg;TreeView treeView; // internal frame subclass for display of tree structureboolean isOpen; // true if some index is openedLibgistCommand cmd; // passed to opThread for executionboolean inWkld = false; // true if opThread is executing an analysis workload for usStringBuffer echoBuffer = new StringBuffer();public ResultProcessor echoResults =     new ResultProcessor() {	public void processItem(String key, String data) {	    if (!inWkld && showResultsItem.getState()) {		consoleFrame.echoTuple(key + ": " + data);	    }	}    };// global GUI state, needed for enabling/disabling themJMenuBar menuBar;JMenu fileMenu, debugMenu, opsMenu, analysisMenu, windowsMenu, treeStatsMenu;JMenuItem newItem, openItem, closeItem, flushItem, exitItem, settingsItem, optionsItem;JMenuItem dumpItem;JMenuItem insertItem, deleteItem, searchItem, executeItem;JMenuItem breakpointsItem;JCheckBoxMenuItem traceAllItem;AbstractAction stepAction, nextAction, contAction, stopAction, cancelAction;JMenuItem newAnalysisItem, openAnalysisItem, completeAnalysisItem,     wkldStatsItem, splitStatsItem, penaltyStatsItem;JCheckBoxMenuItem showCmdsItem, showResultsItem, showTraceItem;JCheckBoxMenuItem checkPenaltyItem;JMenuItem utilItem, slotCntItem, predSzItem;JMenuItem tileItem;// analysis infoAnalysisInfo analysisInfo;public voidwindowActivated(WindowEvent e){}public voidwindowClosed(WindowEvent e){}public voidwindowClosing(WindowEvent e){    try {	Libgist.close();    } catch (LibgistException exc) {	// can't do very much at this point	System.err.println("Could not close " + exc);    }    opThread.stopNow();    System.exit(0);    }public voidwindowDeactivated(WindowEvent e){}public voidwindowDeiconified(WindowEvent e){}public voidwindowIconified(WindowEvent e){}public voidwindowOpened(WindowEvent e){}public TreeViewtreeView(){    return treeView;}// returns the old state and applies the new state// 'isScript' and 'enableCancel' are only relevant for debug modepublic intsetGuiState(int state){    return setGuiState(state, false, false);}public intsetGuiState(int state, boolean isScript, boolean enableCancel){    DbgOutput.println(2, "state: " + state);    int oldState = guiState;    guiState = state;    switch (guiState) {    case INITSTATE:        enableInit();	break;    case IDXOPENSTATE:        enableIndexOpened();	break;    case DEBUGSTATE:        enableDebug(isScript, enableCancel);	break;    case ANLOPENSTATE:        enableAnalysis();	break;    }    return oldState;}// enable all menu items/menus for operations that require // a Gist to work on, excluding the debugging functionsprivate voidenableIndexOpened(){    DbgOutput.println(1, "enableIndexOpened()");    setAllEnabled(true);    // debugging operations only during operations    stepAction.setEnabled(false);    stopAction.setEnabled(false);    cancelAction.setEnabled(false);    nextAction.setEnabled(false);    contAction.setEnabled(false);    // no profile opened    completeAnalysisItem.setEnabled(false);    wkldStatsItem.setEnabled(false);    splitStatsItem.setEnabled(false);    penaltyStatsItem.setEnabled(false);}// enable startup menu items that don't require an index or profile to work withprivate voidenableInit(){    setAllEnabled(false);    // we can create and open indices    fileMenu.setEnabled(true);    newItem.setEnabled(true);    openItem.setEnabled(true);    // we can execute scripts    opsMenu.setEnabled(true);    executeItem.setEnabled(true);    // we can open profile    analysisMenu.setEnabled(true);    openAnalysisItem.setEnabled(true);}// enable/disable all menu items/actionsprivate voidsetAllEnabled(boolean enabled){    DbgOutput.println(2, "enabled: " + enabled);    fileMenu.setEnabled(enabled);    newItem.setEnabled(enabled);    openItem.setEnabled(enabled);    closeItem.setEnabled(enabled);    //dumpItem.setEnabled(enabled);    flushItem.setEnabled(enabled);    optionsItem.setEnabled(enabled);    settingsItem.setEnabled(enabled);    debugMenu.setEnabled(enabled);    stepAction.setEnabled(enabled);    stopAction.setEnabled(enabled);    cancelAction.setEnabled(enabled);    nextAction.setEnabled(enabled);    contAction.setEnabled(enabled);    breakpointsItem.setEnabled(enabled);    opsMenu.setEnabled(enabled);    insertItem.setEnabled(enabled);    deleteItem.setEnabled(enabled);    searchItem.setEnabled(enabled);    executeItem.setEnabled(enabled);    treeStatsMenu.setEnabled(enabled);    utilItem.setEnabled(enabled);    predSzItem.setEnabled(enabled);    slotCntItem.setEnabled(enabled);    analysisMenu.setEnabled(enabled);    newAnalysisItem.setEnabled(enabled);    openAnalysisItem.setEnabled(enabled);    completeAnalysisItem.setEnabled(enabled);    wkldStatsItem.setEnabled(enabled);    splitStatsItem.setEnabled(enabled);    penaltyStatsItem.setEnabled(enabled);    // these are never disabled    windowsMenu.setEnabled(true);    showCmdsItem.setEnabled(true);    showResultsItem.setEnabled(true);    showTraceItem.setEnabled(true);    tileItem.setEnabled(true);}// set all menu items related to debugging enabled, all else disabled;// for insert, remove and fetch: continue, step// additionally for scripts: next and sometimes cancelprivate voidenableDebug(boolean isScript, boolean enableCancel){    setAllEnabled(false);    debugMenu.setEnabled(true);    stepAction.setEnabled(true);    cancelAction.setEnabled(enableCancel);    nextAction.setEnabled(isScript);    contAction.setEnabled(true);    breakpointsItem.setEnabled(true);    treeStatsMenu.setEnabled(true);    utilItem.setEnabled(true);    predSzItem.setEnabled(true);    slotCntItem.setEnabled(true);}// set all menu items except for "stop" to disabledprivate voidenableStop(){    setAllEnabled(false);    debugMenu.setEnabled(true);    stopAction.setEnabled(true);}///////////////////////////////////////////////////////////////////////////////// enableAnalysis - enable menu items for analysis//// Description://///////////////////////////////////////////////////////////////////////////////private voidenableAnalysis(){    setAllEnabled(false);    analysisMenu.setEnabled(true);    // get info on state of analysis    String scriptFile;    Libgist.getAnalysisInfo(analysisInfo);    // newAnalysisItem not enabled: can't create new profile, we just closed the index    newAnalysisItem.setEnabled(false);    openAnalysisItem.setEnabled(true);    completeAnalysisItem.setEnabled(true);    wkldStatsItem.setEnabled(analysisInfo.actualHasWkldStats);    splitStatsItem.setEnabled(analysisInfo.actualHasSplitStats);    penaltyStatsItem.setEnabled(analysisInfo.actualHasPenaltyStats);    // general tree statistics are okay    treeStatsMenu.setEnabled(true);    utilItem.setEnabled(true);    predSzItem.setEnabled(true);    slotCntItem.setEnabled(true);    // can always select another index or exit    fileMenu.setEnabled(true);    newItem.setEnabled(true);    openItem.setEnabled(true);    exitItem.setEnabled(true);}// saves the current configuration (breakpoints, window sizes and positions...)private voidsaveConfig(){    try {	ObjectOutputStream out = new ObjectOutputStream(	    new FileOutputStream(idxName + ".config"));	Breakpoints.save(out);	Properties.save(out);	out.close();    } catch (IOException exc) {	consoleFrame.echoInfo("Could not save settings: " + exc);    }}// reads the configuration (breakpoints, window sizes and positions...) for the current indexprivate voidrestoreConfig(){    Breakpoints.reset();    Properties.reset();    try {	ObjectInputStream in = new ObjectInputStream(	    new FileInputStream(idxName + ".config"));	Breakpoints.restore(in);	Properties.restore(in);	in.close();    } catch (IOException exc) {	// something went wrong - there probably was no .config file	// ignore it    }}// resets the configuration (breakpoints, window sizes and positions...)private voidresetConfig(){    Breakpoints.reset();    Properties.reset();}///////////////////////////////////////////////////////////////////////////////// resetState - clean up when switching GUI state //// Description://	- goes to INITSTATE and makes all open dialogs invisible///////////////////////////////////////////////////////////////////////////////private voidresetState(){    if (treeView != null) {	treeView.dispose();	treeView = null;    }    isOpen = false;    idxName = null;    setGuiState(INITSTATE);    //setTitle("amdb");    setTree("");    wkldStatsDlg.setVisible(false);    splitStatsDlg.setVisible(false);    penaltyStatsDlg.setVisible(false);}// tiles treeView, globalView and consoleFramepublic voidtile(){    if (treeView != null) treeView.tile();    consoleFrame.tile();}///////////////////////////////////////////////////////////////////////////////// echoCmd - display command in console//// Description://// Exceptions: none///////////////////////////////////////////////////////////////////////////////public voidechoCmd(LibgistCommand cmd){    if (!showCmdsItem.getState()) {        return;    }    echoBuffer.setLength(0); // reset    switch (cmd.cmdType) {    case LibgistCommand.INSERT:	echoBuffer.append("insert \"").append(cmd.key);	echoBuffer.append("\" \"").append(cmd.data).append("\"");	break;        case LibgistCommand.REMOVE:	echoBuffer.append("delete \"").append(cmd.qual);	echoBuffer.append("\"");	break;        case LibgistCommand.FETCH:	echoBuffer.append("select ");

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -