@Override public void close() { final MainProp mprop = gui.context.mprop; mprop.set(MainProp.LANG, lang.getSelectedItem().toString()); // new database path: close existing database final String dbpath = path.getText(); if (!mprop.get(MainProp.DBPATH).equals(dbpath)) gui.execute(new Close()); mprop.set(MainProp.DBPATH, dbpath); mprop.write(); final int mh = hitsAsProperty(); gui.context.prop.set(Prop.MAXHITS, mh); final GUIProp gprop = gui.gprop; gprop.set(GUIProp.MOUSEFOCUS, focus.isSelected()); gprop.set(GUIProp.SIMPLEFD, simpfd.isSelected()); gprop.set(GUIProp.JAVALOOK, javalook.isSelected()); gprop.set(GUIProp.MAXHITS, mh); gprop.write(); dispose(); }
/** * Constructor. * * @param ctx database context * @param args command-line arguments * @throws IOException I/O exception */ public BaseXServer(final Context ctx, final String... args) throws IOException { super(args, ctx); final MainProp mprop = context.mprop; final int port = mprop.num(MainProp.SERVERPORT); final int eport = mprop.num(MainProp.EVENTPORT); // check if ports are distinct if (port == eport) throw new BaseXException(PORT_TWICE_X, port); final String host = mprop.get(MainProp.SERVERHOST); final InetAddress addr = host.isEmpty() ? null : InetAddress.getByName(host); if (service) { start(port, args); Util.outln(SRV_STARTED); Performance.sleep(1000); return; } if (stopped) { stop(port, eport); Util.outln(SRV_STOPPED); Performance.sleep(1000); return; } try { // execute command-line arguments for (final String c : commands) execute(c); log = new Log(context, quiet); log.write(SRV_STARTED); socket = new ServerSocket(); socket.setReuseAddress(true); socket.bind(new InetSocketAddress(addr, port)); esocket = new ServerSocket(); esocket.setReuseAddress(true); esocket.bind(new InetSocketAddress(addr, eport)); stop = stopFile(port); // show info when server is aborted Runtime.getRuntime() .addShutdownHook( new Thread() { @Override public void run() { log.write(SRV_STOPPED); log.close(); Util.outln(SRV_STOPPED); } }); new Thread(this).start(); while (!running) Performance.sleep(100); Util.outln(CONSOLE + (console ? TRY_MORE_X : SRV_STARTED), SERVERMODE); if (console) { console(); quit(); } } catch (final IOException ex) { if (log != null) log.write(ex.getMessage()); throw ex; } }
/** * Default constructor. * * @param main reference to the main window */ public DialogPrefs(final GUI main) { super(main, PREFERENCES); // create checkboxes final BaseXBack pp; if (Prop.langright) pp = new BaseXBack(new RTLTableLayout(12, 1)); else pp = new BaseXBack(new TableLayout(12, 1)); pp.add(new BaseXLabel(DATABASE_PATH + COL, true, true)); BaseXBack p; if (Prop.langright) p = new BaseXBack(new RTLTableLayout(1, 2, 8, 0)); else p = new BaseXBack(new TableLayout(1, 2, 8, 0)); final MainProp mprop = gui.context.mprop; final GUIProp gprop = gui.gprop; path = new BaseXTextField(mprop.dbpath().path(), this); final BaseXButton button = new BaseXButton(BROWSE_D, this); button.addActionListener( new ActionListener() { @Override public void actionPerformed(final ActionEvent e) { final IOFile file = new BaseXFileChooser(CHOOSE_DIR, path.getText(), gui).select(Mode.DOPEN); if (file != null) path.setText(file.dirPath()); } }); p.add(path); p.add(button); pp.add(p); pp.add(new BaseXLabel(GUI_INTERACTIONS + COL, true, true).border(12, 0, 6, 0)); // checkbox for Java look and feel javalook = new BaseXCheckBox(JAVA_LF, gprop.is(GUIProp.JAVALOOK), this); pp.add(javalook); // checkbox for realtime mouse focus focus = new BaseXCheckBox(RT_FOCUS, gprop.is(GUIProp.MOUSEFOCUS), this); pp.add(focus); // checkbox for simple file dialog simpfd = new BaseXCheckBox(SIMPLE_FILE_CHOOSER, gprop.is(GUIProp.SIMPLEFD), this); pp.add(simpfd); // enable only if current document contains name attributes final boolean sn = gprop.is(GUIProp.SHOWNAME); names = new BaseXCheckBox(SHOW_NAME_ATTS, sn, 6, this); final Data data = gui.context.data(); names.setEnabled(data != null && ViewData.nameID(data) != 0); oldShowNames = sn; pp.add(names); // maximum number of hits to be displayed final int mh = hitsForSlider(); limit = new BaseXSlider( 0, HITS.length - 1, mh, this, new ActionListener() { @Override public void actionPerformed(final ActionEvent e) { action(limit); } }); label = new BaseXLabel(" "); if (Prop.langright) p = new BaseXBack(new RTLTableLayout(1, 4, 12, 0)); else p = new BaseXBack(new TableLayout(1, 4, 12, 0)); p.add(new BaseXLabel(MAX_NO_OF_HITS + COL)); p.add(limit); p.add(label); pp.add(p); // checkbox for simple file dialog pp.add(new BaseXLabel(LANGUAGE_RESTART + COL, true, true).border(16, 0, 6, 0)); lang = new BaseXCombo(this, LANGS[0]); lang.setSelectedItem(mprop.get(MainProp.LANG)); creds = new BaseXLabel(" "); if (Prop.langright) p = new BaseXBack(new RTLTableLayout(1, 2, 12, 0)); else p = new BaseXBack(new TableLayout(1, 2, 12, 0)); p.add(lang); p.add(creds); pp.add(p); set(pp, BorderLayout.CENTER); set(okCancel(), BorderLayout.SOUTH); action(null); finish(null); }