📄 databasemanagerswing.java
字号:
public void init() { javax.swing.AbstractButton btn; fMain = this; main(); for (int i = 0; i < localActionList.size(); i++) { btn = (javax.swing.AbstractButton) localActionList.get(i); btn.setEnabled(false); } Connection c = null; boolean auto = false; if (getParameter("jdbcDriver") != null) { auto = true; defDriver = getParameter("jdbcDriver"); } if (getParameter("jdbcUrl") != null) { auto = true; defURL = getParameter("jdbcUrl"); } if (getParameter("jdbcUser") != null) { auto = true; defUser = getParameter("jdbcUser"); } if (getParameter("jdbcPassword") != null) { auto = true; defPassword = getParameter("jdbcPassword"); } try { setWaiting("Initializing"); //insertTestData(); //updateAutoCommitBox(); c = (auto ? ConnectionDialogSwing.createConnection( defDriver, defURL, defUser, defPassword) : ConnectionDialogSwing.createConnection(jframe, "Connect") ); } catch (Exception e) { // Added: (weconsultants@users) CommonSwing.errorMessage(e); } finally { setWaiting(null); } if (c != null) { connect(c); } if (getParameter("loadSampleData") != null && getParameter("loadSampleData").equals("true")) { insertTestData(); try { Thread.sleep(1000); } catch (InterruptedException ie) {}; // I don't know why, but the tree refresh below sometimes // doesn't show all tables unless I put this delay here. refreshTree(); } if (getParameter("schemaFilter") != null) { schemaFilter = getParameter("schemaFilter"); } } public static void main(String[] arg) { System.getProperties().put("sun.java2d.noddraw", "true"); // (ulrivo): read all arguments from the command line String lowerArg; String urlid = null; String rcFile = null; boolean autoConnect = false; boolean urlidConnect = false; bMustExit = true; for (int i = 0; i < arg.length; i++) { lowerArg = arg[i].toLowerCase(); if (lowerArg.length() > 1 && lowerArg.charAt(1) == '-') { lowerArg = lowerArg.substring(1); } i++; if (lowerArg.equals("-driver")) { defDriver = arg[i]; autoConnect = true; } else if (lowerArg.equals("-url")) { defURL = arg[i]; autoConnect = true; } else if (lowerArg.equals("-user")) { defUser = arg[i]; autoConnect = true; } else if (lowerArg.equals("-password")) { defPassword = arg[i]; autoConnect = true; } else if (lowerArg.equals("-urlid")) { urlid = arg[i]; urlidConnect = true; } else if (lowerArg.equals("-rcfile")) { rcFile = arg[i]; urlidConnect = true; } else if (lowerArg.equals("-dir")) { defDirectory = arg[i]; } else if (lowerArg.equals("-script")) { defScript = arg[i]; } else if (lowerArg.equals("-noexit")) { bMustExit = false; i--; } else { showUsage(); return; } } DatabaseManagerSwing m = new DatabaseManagerSwing( new JFrame("HSQL Database Manager")); // Added: (weconsultants@users): Need databaseManagerSwing for later Reference refForFontDialogSwing = m; m.main(); Connection c = null; m.setWaiting("Initializing"); try { if (autoConnect && urlidConnect) { throw new IllegalArgumentException( "You may not specify both (urlid) AND (url/user/password)."); } if (autoConnect) { c = ConnectionDialogSwing.createConnection(defDriver, defURL, defUser, defPassword); } else if (urlidConnect) { if (urlid == null) { throw new IllegalArgumentException( "You must specify an 'urlid' to use an RC file"); } autoConnect = true; String rcfilepath = (rcFile == null) ? DEFAULT_RCFILE : rcFile; RCData rcdata = new RCData(new File(rcfilepath), urlid); c = rcdata.getConnection( null, System.getProperty("sqlfile.charset"), System.getProperty("javax.net.ssl.trustStore")); } else { c = ConnectionDialogSwing.createConnection(m.jframe, "Connect"); } } catch (Exception e) { // Added: (weconsultants@users) CommonSwing.errorMessage(e); } finally { m.setWaiting(null); } if (c != null) { m.connect(c); } // Added: (weconsultants@users): For preloadng FontDialogSwing FontDialogSwing.CreatFontDialog(refForFontDialogSwing); m.start(); } /** * This stuff is all quick, except for the refreshTree(). * This unit can be kicked off in main Gui thread. The refreshTree * will be backgrounded and this method will return. */ public void connect(Connection c) { schemaFilter = null; if (c == null) { return; } if (cConn != null) { try { cConn.close(); } catch (SQLException e) { // Added: (weconsultants@users) CommonSwing.errorMessage(e); } } cConn = c; // Added: (weconsultants@users) Need to barrow to get the table rowcounts rowConn = c; try { dMeta = cConn.getMetaData(); sStatement = cConn.createStatement(); updateAutoCommitBox(); // Workaround for EXTREME SLOWNESS getting this info from O. showIndexDetails = (dMeta.getDatabaseProductName().indexOf("Oracle") < 0); refreshTree(); clearResultPanel(); if (fMain instanceof JApplet) { getAppletContext().showStatus( "JDBC Connection established to a " + dMeta.getDatabaseProductName() + " v. " + dMeta.getDatabaseProductVersion() + " database as '" + dMeta.getUserName() + "'."); } } catch (SQLException e) { // Added: (weconsultants@users) CommonSwing.errorMessage(e); } } private static void showUsage() { System.out.println( "Usage: java DatabaseManagerSwing [--options]\n" + "where options include:\n" + " --driver <classname> jdbc driver class\n" + " --url <name> jdbc url\n" + " --user <name> username used for connection\n" + " --password <password> password for this user\n" + " --urlid <urlid> use url/user/password/driver in rc file\n" + " --rcfile <file> (defaults to 'dbmanager.rc' in home dir)\n" + " --dir <path> default directory\n" + " --script <file> reads from script file\n" + " --noexit do not call system.exit()\n" + "(Single-hypen switches like '-driver' are also supported)"); } private void insertTestData() { try { DatabaseManagerCommon.createTestTables(sStatement); txtCommand.setText( DatabaseManagerCommon.createTestData(sStatement)); for (int i = 0; i < DatabaseManagerCommon.testDataSql.length; i++) { addToRecent(DatabaseManagerCommon.testDataSql[i]); } executeCurrentSQL(); } catch (SQLException e) { // Added: (weconsultants@users) CommonSwing.errorMessage(e); } } public void setMustExit(boolean b) { this.bMustExit = b; } private DBMPrefs prefs = null; public void main() { JMenu jmenu; JMenuItem mitem; try { prefs = new DBMPrefs(fMain instanceof JApplet); } catch (Exception e) { System.err.println( "Failed to load preferences. Proceeding with defaults:\n"); } if (prefs == null) { setLF(CommonSwing.Native); } else { autoRefresh = prefs.autoRefresh; displayRowCounts = prefs.showRowCounts; showSys = prefs.showSysTables; showSchemas = prefs.showSchemas; gridFormat = prefs.resultGrid; showTooltips = prefs.showTooltips; setLF(prefs.laf); } // (ulrivo): An actual icon. N.b., this adds some tips to the tip map fMain.getContentPane().add(createToolBar(), "North"); if (fMain instanceof java.awt.Frame) { ((java.awt.Frame) fMain).setIconImage(CommonSwing.getIcon("Frame")); } if (fMain instanceof java.awt.Window) { ((java.awt.Window) fMain).addWindowListener(this); } JMenuBar bar = new JMenuBar(); // used shortcuts: CERGTSIUDOLM String[] fitems = { "-Connect...", "--", "OOpen Script...", "-Save Script...", "-Save Result...", "--", "-Exit" }; jmenu = addMenu(bar, "File", fitems); // All actions after Connect and the divider are local. for (int i = 2; i < jmenu.getItemCount(); i++) { mitem = jmenu.getItem(i); if (mitem != null) { localActionList.add(mitem); } } Object[] vitems = { "RRefresh Tree", boxAutoRefresh, "--", boxRowCounts, boxShowSys, boxShowSchemas, boxShowGrid }; addMenu(bar, "View", vitems); String[] sitems = { "SSELECT", "IINSERT", "UUPDATE", "DDELETE", "EEXECUTE", "---", "-CREATE TABLE", "-DROP TABLE", "-CREATE INDEX", "-DROP INDEX", "--", "-CHECKPOINT", "-SCRIPT", "-SET", "-SHUTDOWN", "--", "-Test Script" }; addMenu(bar, "Command", sitems); mRecent = new JMenu("Recent"); mRecent.setMnemonic(KeyEvent.VK_R); bar.add(mRecent); ButtonGroup lfGroup = new ButtonGroup(); lfGroup.add(rbNativeLF); lfGroup.add(rbJavaLF); lfGroup.add(rbMotifLF); boxShowSchemas.setSelected(showSchemas); boxShowGrid.setSelected(gridFormat); boxTooltips.setSelected(showTooltips); boxShowGrid.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_G, Event.CTRL_MASK)); boxAutoRefresh.setSelected(autoRefresh); boxRowCounts.setSelected(displayRowCounts); boxShowSys.setSelected(showSys); rbNativeLF.setActionCommand("LFMODE:" + CommonSwing.Native); rbJavaLF.setActionCommand("LFMODE:" + CommonSwing.Java); rbMotifLF.setActionCommand("LFMODE:" + CommonSwing.Motif); tipMap.put(mitemUpdateSchemas, "Refresh the schema list in this menu"); tipMap.put(rbAllSchemas, "Display items in all schemas"); tipMap.put(mitemAbout, "Display product information"); tipMap.put(mitemHelp, "Display advice for obtaining help"); tipMap.put(boxAutoRefresh, "Refresh tree (and schema list) automatically" + "when YOU modify database objects"); tipMap.put(boxShowSchemas, "Display object names in tree like schemaname.basename"); tipMap.put(rbNativeLF, "Set Look and Feel to Native for your platform"); tipMap.put(rbJavaLF, "Set Look and Feel to Java"); tipMap.put(rbMotifLF, "Set Look and Feel to Motif"); boxTooltips.setToolTipText( "Display tooltips (hover text), like this"); tipMap.put(boxAutoCommit, "Shows current Auto-commit mode. Click to change"); tipMap.put( boxLogging, "Shows current JDBC DriverManager logging mode. Click to change"); tipMap.put(boxShowSys,
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -