📄 mainwindow.java
字号:
opThread.dispatchCmd(cmd); } }); openItem = new JMenuItem("Open..."); final JFileChooser openChooser = new JFileChooser("."); openChooser.setDialogTitle("Open Index"); openChooser.setFileSelectionMode(JFileChooser.FILES_ONLY); fileMenu.add(openItem); openItem.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent event) { // first close currently opened index // let user choose index file int retval = openChooser.showOpenDialog(MainWindow.this); if (retval != 0) { return; } String fileName = openChooser.getSelectedFile().getPath(); // open AM cmd.reset(); cmd.cmdType = LibgistCommand.OPEN; cmd.indexName.append(fileName); opThread.dispatchCmd(cmd); enableIndexOpened(); } }); closeItem = new JMenuItem("Close"); fileMenu.add(closeItem); closeItem.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent event) { // close AM cmd.reset(); cmd.cmdType = LibgistCommand.CLOSE; opThread.dispatchCmd(cmd); //MainWindow.this.setTitle("amdb"); } }); flushItem = new JMenuItem("Flush"); fileMenu.add(flushItem); flushItem.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent event) { // open AM cmd.reset(); cmd.cmdType = LibgistCommand.FLUSH; opThread.dispatchCmd(cmd); } }); fileMenu.addSeparator(); optionsItem = new JMenuItem("Properties..."); fileMenu.add(optionsItem); optionsItem.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { Properties.edit(); } }); settingsItem = new JMenuItem("Save Settings"); fileMenu.add(settingsItem); settingsItem.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { saveConfig(); } }); fileMenu.addSeparator(); exitItem = new JMenuItem("Exit"); fileMenu.add(exitItem); exitItem.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { // close AM opThread.stopNow(); Libgist.cleanup(); System.exit(0); } });}private voidcreateOpsMenu(){ opsMenu = new JMenu("Ops"); menuBar.add(opsMenu); insertItem = new JMenuItem("Insert..."); opsMenu.add(insertItem); final Object[] insertMsg = new Object[4]; insertMsg[0] = "Key:"; final JTextField insertKey = new JTextField(""); insertMsg[1] = insertKey; insertMsg[2] = "Data:"; final JTextField insertData = new JTextField(""); insertMsg[3] = insertData; insertItem.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent event) { int response = JOptionPane.showOptionDialog(MainWindow.this, insertMsg, "Insert", JOptionPane.OK_CANCEL_OPTION, JOptionPane.PLAIN_MESSAGE, null, null, null); if (response != JOptionPane.OK_OPTION) { return; } // insert new item cmd.reset(); cmd.cmdType = LibgistCommand.INSERT; cmd.key.append(insertKey.getText()); cmd.data.append(insertData.getText()); opThread.dispatchCmd(cmd); } }); deleteItem = new JMenuItem("Delete..."); opsMenu.add(deleteItem); final Object[] deleteMsg = new Object[2]; deleteMsg[0] = "Query:"; final JTextField deleteQuery = new JTextField(""); deleteMsg[1] = deleteQuery; deleteItem.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent event) { int response = JOptionPane.showOptionDialog(MainWindow.this, deleteMsg, "Delete", JOptionPane.OK_CANCEL_OPTION, JOptionPane.PLAIN_MESSAGE, null, null, null); if (response != JOptionPane.OK_OPTION) { return; } // delete item(s) cmd.reset(); cmd.cmdType = LibgistCommand.REMOVE; cmd.qual.append(deleteQuery.getText()); opThread.dispatchCmd(cmd); } }); searchItem = new JMenuItem("Search..."); opsMenu.add(searchItem); final Object[] searchMsg = new Object[4]; searchMsg[0] = "Query:"; final JTextField searchQuery = new JTextField(""); searchMsg[1] = searchQuery; searchMsg[2] = "Retrieval Limit:"; final JTextField retrLimit = new JTextField(""); searchMsg[3] = retrLimit; searchItem.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent event) { int response = JOptionPane.showOptionDialog(MainWindow.this, searchMsg, "Search", JOptionPane.OK_CANCEL_OPTION, JOptionPane.PLAIN_MESSAGE, null, null, null); if (response != JOptionPane.OK_OPTION) { return; } int limit = 0; // 0 means "get them all" // if no limit is specified: we leave it at 0 if (retrLimit.getText() != null) { try { limit = Integer.parseInt(retrLimit.getText()); } catch (NumberFormatException e) { // user typed junk limit = 0; retrLimit.setText(""); } } // execute query cmd.reset(); cmd.cmdType = LibgistCommand.FETCH; cmd.qual.append(searchQuery.getText()); cmd.fetchLimit = limit; opThread.dispatchCmd(cmd); } }); executeItem = new JMenuItem("Execute..."); final JFileChooser executeChooser = new JFileChooser("."); executeChooser.setDialogTitle("Execute Script"); executeChooser.setFileSelectionMode(JFileChooser.FILES_ONLY); opsMenu.add(executeItem); executeItem.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent event) { // let user choose script file int retval = executeChooser.showDialog(MainWindow.this, "Execute"); if (retval != 0) { return; } // execute script cmd.reset(); cmd.cmdType = LibgistCommand.SCRIPT; cmd.scriptFile.append(executeChooser.getSelectedFile().getPath()); opThread.dispatchCmd(cmd); } });}private voidcreateDebugMenu(){ debugMenu = new JMenu("Debug"); menuBar.add(debugMenu); debugMenu.add(stepAction); debugMenu.add(nextAction); debugMenu.add(contAction); debugMenu.add(stopAction); traceAllItem = new JCheckBoxMenuItem("Trace All"); debugMenu.add(traceAllItem); debugMenu.addSeparator(); breakpointsItem = new JMenuItem("Breakpoints..."); debugMenu.add(breakpointsItem); breakpointsItem.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent event) { Breakpoints.edit(); } }); Breakpoints.setParent(this);}private voidcreateTreeStatsMenu(){ treeStatsMenu = new JMenu("Tree Stats"); menuBar.add(treeStatsMenu); utilItem = new JMenuItem("Utilization"); treeStatsMenu.add(utilItem); utilItem.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { Libgist.getWkldNodeStats(Libgist.NODEUTIL, 0, false); treeView.showStats(Libgist.nodeCnt, Libgist.displayStats, utilItem.getText()); } }); slotCntItem = new JMenuItem("Slot Count"); treeStatsMenu.add(slotCntItem); slotCntItem.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { Libgist.getWkldNodeStats(Libgist.SLOTCNT, 0, false); treeView.showStats(Libgist.nodeCnt, Libgist.displayStats, slotCntItem.getText()); } }); predSzItem = new JMenuItem("Predicate Size"); treeStatsMenu.add(predSzItem); predSzItem.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { Libgist.getWkldNodeStats(Libgist.PREDSIZE, 0, false); treeView.showStats(Libgist.nodeCnt, Libgist.displayStats, predSzItem.getText()); } });}private voidcreateAnalysisMenu(){ analysisMenu = new JMenu("Analysis"); menuBar.add(analysisMenu); // analysis-related variables analysisInfo = new AnalysisInfo(); wkldStatsDlg = new WkldStatsDlg(this); splitStatsDlg = new SplitStatsDlg(this); penaltyStatsDlg = new PenaltyStatsDlg(this); newAnalysisItem = new JMenuItem("Create Analysis ..."); analysisMenu.add(newAnalysisItem); newAnalysisItem.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent event) { JOptionPane.showMessageDialog(MainWindow.this, "Not implemented yet.\nUse command createanl in gistcmdline instead."); } }); openAnalysisItem = new JMenuItem("Open Analysis ..."); final JFileChooser openAnalysisChooser = new JFileChooser("."); openAnalysisChooser.setDialogTitle("Open Analysis"); openAnalysisChooser.setFileSelectionMode(JFileChooser.FILES_ONLY); analysisMenu.add(openAnalysisItem); openAnalysisItem.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent event) { int retval = openAnalysisChooser.showOpenDialog(MainWindow.this); if (retval != 0) { return; } File f = openAnalysisChooser.getSelectedFile(); cmd.reset(); cmd.cmdType = LibgistCommand.OPENANL; cmd.analysisFile = f; opThread.dispatchCmd(cmd); } }); completeAnalysisItem = new JMenuItem("Complete Analysis ..."); analysisMenu.add(completeAnalysisItem); completeAnalysisItem.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent event) { JOptionPane.showMessageDialog(MainWindow.this, "Not implemented yet.\nUse commands wkldstats, splitstats and penaltystats\nin gistcmdline instead."); } }); analysisMenu.addSeparator(); wkldStatsItem = new JMenuItem("Workload Stats ..."); analysisMenu.add(wkldStatsItem); wkldStatsItem.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent event) { wkldStatsDlg.setVisible(true); } }); splitStatsItem = new JMenuItem("Split Stats ..."); analysisMenu.add(splitStatsItem); wkldStatsItem.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent event) { splitStatsDlg.setVisible(true); } }); penaltyStatsItem = new JMenuItem("Penalty Stats ..."); analysisMenu.add(penaltyStatsItem); penaltyStatsItem.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent event) { penaltyStatsDlg.setVisible(true); } });}private voidcreateWindowsMenu(){ windowsMenu = new JMenu("Windows"); menuBar.add(windowsMenu); showCmdsItem = new JCheckBoxMenuItem("Show Commands"); showCmdsItem.setState(true); windowsMenu.add(showCmdsItem); showResultsItem = new JCheckBoxMenuItem("Show Results"); showResultsItem.setState(true); windowsMenu.add(showResultsItem); showTraceItem = new JCheckBoxMenuItem("Show Trace Output"); showTraceItem.setState(true); windowsMenu.add(showTraceItem); tileItem = new JMenuItem("Tile"); tileItem.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent event) { MainWindow.this.tile(); } }); windowsMenu.add(tileItem);}private voidsetTree(String title){ consoleFrame.setTree(title);}private voidopen(String indexName){ DbgOutput.println(1, "open() " + indexName); cmd.reset(); cmd.cmdType = LibgistCommand.OPEN; cmd.indexName.append(indexName); opThread.dispatchCmd(cmd);}public static voidmain(String[] argv){ MainWindow win; DbgOutput.toStdout(); win = new MainWindow(); // process cmd line arguments int i; for (i = 0; i < argv.length; i++) { if (argv[i].equals("-D")) { i++; // try to interpret the next argument as the debug level int dbgLvl = 1; // basic debug level if (i >= argv.length) { // no more arguments, we stick with debug level 1 break; } try { dbgLvl = Integer.parseInt(argv[i]); } catch(NumberFormatException e) { dbgLvl = 1; // didn't work, this is probably a filename win.open(argv[i]); } DbgOutput.setDbgLevel(dbgLvl); Libgist.setDbgLevel(dbgLvl); } else if (argv[i].equals("-h")) { // print help message and exit System.out.println("Usage: amdb [-D <dbglevel> | -h] [index]"); System.exit(0); } else { // this is a name of an index, open it //System.out.println("open " + argv[i]); win.open(argv[i]); } } win.setTitle("amdb"); win.setSize(800, 600); win.setLocation(50, 50); win.setVisible(true);}}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -