void login() { try { logoutBtn.setEnabled(true); contactList.setEditable(false); loginBtn.setEnabled(false); loginId.setEnabled(false); password.setEnabled(false); // plugin.login( getMyLoginId(), password.getText(), getContactList(), MessagingNetwork.STATUS_ONLINE); logoutBtn.setEnabled(true); } catch (Throwable tr) { printException(tr); boolean loggedIn = false; try { loggedIn = plugin.getClientStatus(getMyLoginId()) != MessagingNetwork.STATUS_OFFLINE; } catch (Throwable tr2) { printException(tr2); } if (!loggedIn) { enableLoginUI(); } } }
void enableLoginUI() { try { logoutBtn.setEnabled(false); contactList.setEditable(true); loginBtn.setEnabled(true); loginId.setEnabled(true); password.setEnabled(true); } catch (Throwable tr) { CAT.error("exception", tr); } }
public void goTo(int where) { try { if (where < 1) { return; } if (where > db.getRecordCount()) { return; } db.gotoRecord(where); crl.setText("Record " + db.getCurrentRecordNumber()); delCB.setState(db.deleted()); Field f; LogicalField lf; Checkbox c; TextField t; int i; for (i = 1; i <= db.getFieldCount(); i++) { f = db.getField(i); if (f.isMemoField()) { } else if (f.getType() == 'L') { lf = (LogicalField) f; c = (Checkbox) fldObjects.elementAt(i - 1); c.setState(lf.getBoolean()); } else { t = (TextField) fldObjects.elementAt(i - 1); t.setText(f.get().trim()); } } Next.setEnabled(!(db.getCurrentRecordNumber() == db.getRecordCount())); nextRecord.setEnabled(!(db.getCurrentRecordNumber() == db.getRecordCount())); Prev.setEnabled(!(db.getCurrentRecordNumber() == 1)); prevRecord.setEnabled(!(db.getCurrentRecordNumber() == 1)); firstRecord.setEnabled(db.getRecordCount() > 0); lastRecord.setEnabled(db.getRecordCount() > 0); SBrecpos.setValues(db.getCurrentRecordNumber(), 1, 0, db.getRecordCount()); } // try catch (Exception e1) { System.out.println(e1); System.exit(2); } }
/** * Notify any DialogListeners of changes having occurred If a listener returns false, do not call * further listeners and disable the OK button and preview Checkbox (if it exists). For * PlugInFilters, this ensures that the PlugInFilterRunner, which listens as the last one, is not * called if the PlugInFilter has detected invalid parameters. Thus, unnecessary calling the * run(ip) method of the PlugInFilter for preview is avoided in that case. */ private void notifyListeners(AWTEvent e) { if (dialogListeners == null) return; boolean everythingOk = true; for (int i = 0; everythingOk && i < dialogListeners.size(); i++) try { resetCounters(); if (!((DialogListener) dialogListeners.elementAt(i)).dialogItemChanged(this, e)) everythingOk = false; } // disable further listeners if false (invalid parameters) returned catch (Exception err) { // for exceptions, don't cover the input by a window but IJ.beep(); // show them at in the "Log" IJ.log( "ERROR: " + err + "\nin DialogListener of " + dialogListeners.elementAt(i) + "\nat " + (err.getStackTrace()[0]) + "\nfrom " + (err.getStackTrace()[1])); // requires Java 1.4 } boolean workaroundOSXbug = IJ.isMacOSX() && okay != null && !okay.isEnabled() && everythingOk; if (previewCheckbox != null) previewCheckbox.setEnabled(everythingOk); if (okay != null) okay.setEnabled(everythingOk); if (workaroundOSXbug) repaint(); // OSX 10.4 bug delays update of enabled until the next input }
public synchronized void adjustmentValueChanged(AdjustmentEvent e) { if (!checkImage()) { IJ.beep(); IJ.showStatus("No Image"); return; } if (e.getSource() == minSlider) { adjustMinHue((int) minSlider.getValue()); } else if (e.getSource() == maxSlider) { adjustMaxHue((int) maxSlider.getValue()); } else if (e.getSource() == minSlider2) { adjustMinSat((int) minSlider2.getValue()); } else if (e.getSource() == maxSlider2) { adjustMaxSat((int) maxSlider2.getValue()); } else if (e.getSource() == minSlider3) { adjustMinBri((int) minSlider3.getValue()); } else if (e.getSource() == maxSlider3) { adjustMaxBri((int) maxSlider3.getValue()); } originalB.setEnabled(true); updateLabels(); updatePlot(); notify(); }
public void itemStateChanged(ItemEvent E) { // The 'log chat' checkbox if (E.getSource() == logChat) { server.logChats = logChat.getState(); // Loop through all of the chat rooms, and set the logging // state to be the same as the value of the checkbox for (int count = 0; count < server.chatRooms.size(); count++) { babylonChatRoom tmp = (babylonChatRoom) server.chatRooms.elementAt(count); try { tmp.setLogging(server.logChats); } catch (IOException e) { server.serverOutput( server.strings.get(thisClass, "togglelogerror") + " " + tmp.name + "\n"); } } } // The user list if (E.getSource() == userList) { // If anything is selected, enable the 'disconnect user' // button, otherwise disable it synchronized (userList) { disconnect.setEnabled(userList.getSelectedItem() != null); } } }
private void startGame() { timer.setDelay(INITIAL_DELAY); timer.setPaused(false); start_newgame_butt.setLabel("Start New Game"); pause_resume_butt.setEnabled(true); pause_resume_butt.setLabel("Pause"); pause_resume_butt.validate(); sounds.playSoundtrack(); }
private void gameOver() { System.out.println("Game Over!"); timer.setPaused(true); pause_resume_butt.setEnabled(false); int score = Integer.parseInt(score_label.getText()); int high_score = high_score_label.getText().length() > 0 ? Integer.parseInt(high_score_label.getText()) : 0; if (score > high_score) high_score_label.setText("" + score); sounds.playGameOverSound(); }
// GL public synchronized void itemStateChanged(ItemEvent e) { if (e.getSource() == hsb) isRGB = false; if (e.getSource() == rgb) isRGB = true; if (e.getSource() == hsb || e.getSource() == rgb) { flag = true; originalB.setEnabled(false); filteredB.setEnabled(false); minHue = minSat = minBri = 0; maxHue = maxSat = maxBri = 255; bandPassH.setState(true); bandPassS.setState(true); bandPassB.setState(true); } reset(imp, ip); ip = setup(imp); apply(imp, ip); updateNames(); notify(); }
public void actionPerformed(ActionEvent e) { Button b = (Button) e.getSource(); if (b == null) return; boolean imageThere = checkImage(); if (imageThere) { if (b == originalB) { reset(imp, ip); filteredB.setEnabled(true); } else if (b == filteredB) { apply(imp, ip); } else if (b == sampleB) { reset(imp, ip); sample(); apply(imp, ip); } else if (b == stackB) { applyStack(); } else if (b == helpB) { IJ.showMessage( "Help", "Threshold Colour v1.0\n \n" + "Modification of Bob Dougherty's BandPass2 plugin by G.Landini to\n" + "threshold 24 bit RGB images based on Hue, Saturation and Brightness\n" + "or Red, Green and Blue components.\n \n" + "Pass: Band-pass filter (anything within range is displayed).\n \n" + "Stop: Band-reject filter (anything within range is NOT displayed).\n \n" + "Original: Shows the original image and updates the buffer when\n" + " switching to another image.\n \n" + "Filtered: Shows the filtered image.\n \n" + "Stack: Processes the rest of the slices in the stack (if any)\n" + " using the current settings.\n \n" + "Threshold: Shows the object/background in the foreground and\n" + " background colours selected in the ImageJ toolbar.\n \n" + "Invert: Swaps the fore/background colours.\n \n" + "Sample: (experimental) Sets the ranges of the filters based on the\n" + " pixel value componentd in a rectangular, user-defined, ROI.\n \n" + "HSB RGB: Selects HSB or RGB space and resets all the filters.\n \n" + "Note that the \'thresholded\' image is RGB, not 8 bit grey."); } updatePlot(); updateLabels(); imp.updateAndDraw(); } else { IJ.beep(); IJ.showStatus("No Image"); } notify(); }
public void addRec() { try { setFields(); db.write(); goTo(db.getRecordCount()); delCB.setState(false); trl.setText(" of " + db.getRecordCount()); } // try catch (Exception e1) { System.out.println(e1); System.exit(1); } Update.setEnabled(true); updateRecord.setEnabled(true); }
public void actionPerformed(ActionEvent event) { if (event.getSource() == firstRecord) { goTo(1); return; } if (event.getSource() == lastRecord) { goTo(db.getRecordCount()); return; } if (event.getSource() == Next || event.getSource() == nextRecord) { if (db.getCurrentRecordNumber() < db.getRecordCount()) { goTo(db.getCurrentRecordNumber() + 1); } return; } if (event.getSource() == Prev || event.getSource() == prevRecord) { if (db.getCurrentRecordNumber() > 1) { goTo(db.getCurrentRecordNumber() - 1); } return; } if (event.getSource() == Add || event.getSource() == addRecord) { addRec(); return; } if (event.getSource() == Update || event.getSource() == updateRecord) { updateRec(); return; } if (event.getSource() == Clear || event.getSource() == clearRecord) { clearFields(); return; } if (event.getSource() == opener) { FileDialog fd = new FileDialog(this, "dbfShow", FileDialog.LOAD); fd.setFile("*.DBF"); fd.pack(); fd.setVisible(true); String DBFname = fd.getFile(); String dirname = fd.getDirectory(); if (DBFname == null) { return; } if (DBFname.length() < 1) { return; } String dbname = new String(dirname + DBFname); try { setupDBFields(dbname); } catch (Exception e1) { System.out.println(e1); System.exit(4); } pack(); setVisible(true); return; } if (event.getSource() == packer) { packer.setEnabled(false); try { db.pack(); trl.setText(" of " + db.getRecordCount()); } catch (Exception e1) { e1.printStackTrace(); } if (db.getRecordCount() == 0) { Update.setEnabled(false); Next.setEnabled(false); updateRecord.setEnabled(false); nextRecord.setEnabled(false); SBrecpos.setValues(0, 1, 0, 0); } else { goTo(1); } packer.setEnabled(true); return; } if (event.getSource() == quiter) { System.exit(0); return; } if (event.getSource() instanceof Button) { int i; Field f; for (i = 1; i <= db.getFieldCount(); i++) { try { f = db.getField(i); if (f.isMemoField()) { if (event.getActionCommand().equals(f.getName())) { md = new memoDialog(this, f); md.setVisible(true); return; } } } catch (Exception e1) { System.out.println(e1); } } } }
public void setupDBFields(String dbname) throws Exception { viewPane.setLayout(null); Dimension dimView = sp.getSize(); int height = 0, width = 50; viewPane.removeAll(); db = new DBF(dbname); setTitle(dbname); gb = new GridBagLayout(); gbc = new GridBagConstraints(); viewPane.setLayout(gb); int i, j; fldObjects = new Vector(db.getFieldCount()); for (i = 1; i <= db.getFieldCount(); i++) { j = i - 1; f = db.getField(i); if (f.isMemoField() || f.isPictureField()) { b = new Button(db.getField(i).getName()); b.addActionListener(this); addComponent( viewPane, b, 1, j, 1, 1, GridBagConstraints.HORIZONTAL, GridBagConstraints.EAST); fldObjects.addElement(b); } else if (f.getType() == 'L') { c = new Checkbox(db.getField(i).getName(), true); addComponent( viewPane, c, 1, j, 1, 1, GridBagConstraints.HORIZONTAL, GridBagConstraints.EAST); fldObjects.addElement(c); } else { l = new Label(db.getField(i).getName(), Label.RIGHT); addComponent( viewPane, l, 0, j, 1, 1, GridBagConstraints.HORIZONTAL, GridBagConstraints.EAST); int ln = f.getLength(); if (ln > 100) { ln = 100; } t = new TextField(db.getField(i).getName(), ln); if (width < ln * 10) { width = ln * 10; } addComponent( viewPane, t, 1, j, ln, 1, GridBagConstraints.HORIZONTAL, GridBagConstraints.EAST); fldObjects.addElement(t); t.setEditable(true); } height += 10; } crl.setText("Record " + db.getCurrentRecordNumber()); trl.setText(" of " + db.getRecordCount()); SBrecpos.setMaximum(db.getRecordCount()); addComponent(viewPane, crl, 0, i, 1, 1, GridBagConstraints.HORIZONTAL, GridBagConstraints.EAST); addComponent(viewPane, trl, 1, i, 1, 1, GridBagConstraints.HORIZONTAL, GridBagConstraints.EAST); i++; addComponent( viewPane, SBrecpos, 0, i, 2, 1, GridBagConstraints.HORIZONTAL, GridBagConstraints.EAST); addComponent( viewPane, delCB, 2, i, 1, 1, GridBagConstraints.HORIZONTAL, GridBagConstraints.EAST); i++; addComponent( viewPane, Prev, 0, i, 1, 1, GridBagConstraints.HORIZONTAL, GridBagConstraints.EAST); addComponent( viewPane, Next, 1, i, 1, 1, GridBagConstraints.HORIZONTAL, GridBagConstraints.EAST); i++; addComponent(viewPane, Add, 0, i, 1, 1, GridBagConstraints.HORIZONTAL, GridBagConstraints.EAST); addComponent( viewPane, Update, 1, i, 1, 1, GridBagConstraints.HORIZONTAL, GridBagConstraints.EAST); addComponent( viewPane, Clear, 2, i, 1, 1, GridBagConstraints.HORIZONTAL, GridBagConstraints.EAST); Prev.setEnabled(false); prevRecord.setEnabled(false); if (db.getRecordCount() == 0) { Update.setEnabled(false); updateRecord.setEnabled(false); Next.setEnabled(false); nextRecord.setEnabled(false); } dimView.setSize(width + 150, height + 150); sp.setSize(dimView); goTo(1); }
public babylonServerWindow(babylonServer parent, String Name) { super(Name); server = parent; myLayout = new GridBagLayout(); setLayout(myLayout); p = new Panel(); p.setLayout(myLayout); listening = new Label(server.strings.get(thisClass, "listenport") + " " + server.port); p.add( listening, new babylonConstraints( 0, 0, 1, 1, 0.0, 0.0, GridBagConstraints.NORTHWEST, GridBagConstraints.NONE, new Insets(0, 0, 0, 0), 0, 0)); logChat = new Checkbox(server.strings.get(thisClass, "logchats"), server.logChats); logChat.addItemListener(this); p.add( logChat, new babylonConstraints( 1, 0, 1, 1, 1.0, 1.0, GridBagConstraints.NORTHWEST, GridBagConstraints.NONE, new Insets(0, 0, 0, 0), 0, 0)); userList = new List(4, false); userList.addItemListener(this); p.add( userList, new babylonConstraints( 0, 1, 1, 5, 1.0, 1.0, GridBagConstraints.NORTHWEST, GridBagConstraints.BOTH, new Insets(0, 0, 5, 0), 0, 0)); userAdmin = new Button(server.strings.get(thisClass, "usermanagement")); userAdmin.addActionListener(this); p.add( userAdmin, new babylonConstraints( 1, 1, 1, 1, 1.0, 1.0, GridBagConstraints.NORTHWEST, GridBagConstraints.HORIZONTAL, new Insets(0, 0, 0, 0), 0, 0)); console = new Button(server.strings.get(thisClass, "adminclient")); console.addActionListener(this); p.add( console, new babylonConstraints( 1, 2, 1, 1, 1.0, 1.0, GridBagConstraints.NORTHWEST, GridBagConstraints.HORIZONTAL, new Insets(0, 0, 0, 0), 0, 0)); disconnect = new Button(server.strings.get(thisClass, "disconnectuser")); disconnect.setEnabled(false); disconnect.addActionListener(this); p.add( disconnect, new babylonConstraints( 1, 3, 1, 1, 1.0, 1.0, GridBagConstraints.NORTHWEST, GridBagConstraints.HORIZONTAL, new Insets(0, 0, 0, 0), 0, 0)); disconnectAll = new Button(server.strings.get(thisClass, "disconnectall")); disconnectAll.setEnabled(false); disconnectAll.addActionListener(this); p.add( disconnectAll, new babylonConstraints( 1, 4, 1, 1, 1.0, 1.0, GridBagConstraints.NORTHWEST, GridBagConstraints.HORIZONTAL, new Insets(0, 0, 0, 0), 0, 0)); shutdown = new Button(server.strings.get(thisClass, "shutdown")); shutdown.addActionListener(this); p.add( shutdown, new babylonConstraints( 1, 5, 1, 1, 1.0, 1.0, GridBagConstraints.NORTHWEST, GridBagConstraints.HORIZONTAL, new Insets(0, 0, 0, 0), 0, 0)); stats = new TextField( server.strings.get(thisClass, "connectionscurrent") + " 0 " + server.strings.get(thisClass, "connectionspeak") + " 0 " + server.strings.get(thisClass, "connectionstotal") + " 0", 40); stats.setEditable(false); p.add( stats, new babylonConstraints( 0, 7, 2, 1, 1.0, 1.0, GridBagConstraints.NORTHWEST, GridBagConstraints.BOTH, new Insets(0, 0, 0, 0), 0, 0)); logWindow = new TextArea( server.strings.get(thisClass, "activitylog") + "\n", 10, 40, TextArea.SCROLLBARS_VERTICAL_ONLY); logWindow.setEditable(false); p.add( logWindow, new babylonConstraints( 0, 8, 2, 1, 1.0, 1.0, GridBagConstraints.NORTHWEST, GridBagConstraints.BOTH, new Insets(0, 0, 5, 0), 0, 0)); canvas = new babylonPictureCanvas(this); p.add( canvas, new babylonConstraints( 0, 9, 2, 1, 1.0, 1.0, GridBagConstraints.NORTHWEST, GridBagConstraints.BOTH, new Insets(0, 0, 0, 0), 0, 0)); add( p, new babylonConstraints( 0, 0, 1, 1, 1.0, 1.0, GridBagConstraints.NORTHWEST, GridBagConstraints.BOTH, new Insets(5, 5, 5, 5), 0, 0)); try { URL url = new URL("file", "localhost", "babylonPic.jpg"); Image image = getToolkit().getImage(url); canvas.setimage(image); } catch (Exception e) { System.out.println(e); } try { URL iconUrl = new URL("file", "localhost", "babylonIcon.jpg"); ImageIcon icon = new ImageIcon(iconUrl); this.setIconImage(icon.getImage()); } catch (Exception e) { /* Not important */ } addWindowListener(this); setSize(600, 600); pack(); }
void sample() { byte[] hsSource, ssSource, bsSource; // ImageProcessor ip2; // ip2 = imp.getProcessor(); Rectangle myroi = ip.getRoi(); int swidth = myroi.width; int sheight = myroi.height; int sy = myroi.y; int sx = myroi.x; if (swidth == width && sheight == height) { IJ.showMessage("Select a rectangular ROI"); IJ.beep(); return; } IJ.run("Select None"); int snumPixels = swidth * sheight; hsSource = new byte[snumPixels]; ssSource = new byte[snumPixels]; bsSource = new byte[snumPixels]; int[] pixs = new int[snumPixels]; int[] bin = new int[256]; int counter = 0, pi = 0, rangePassH = 0, rangeStopH = 0, rangePassL = 0, rangeStopL = 0, i, j; for (i = sy; i < sy + sheight; i++) { for (j = sx; j < sx + swidth; j++) { pixs[counter++] = ip.getPixel(j, i); } } // Get hsb or rgb from roi. ColorProcessor cp2 = new ColorProcessor(swidth, sheight, pixs); int iminhue = 256, imaxhue = -1, iminsat = 256, imaxsat = -1, iminbri = 256, imaxbri = -1; int iminred = 256, imaxred = -1, imingre = 256, imaxgre = -1, iminblu = 256, imaxblu = -1; if (isRGB) cp2.getRGB(hsSource, ssSource, bsSource); else cp2.getHSB(hsSource, ssSource, bsSource); for (i = 0; i < snumPixels; i++) { bin[hsSource[i] & 255] = 1; if ((hsSource[i] & 255) > imaxhue) imaxhue = (hsSource[i] & 255); if ((hsSource[i] & 255) < iminhue) iminhue = (hsSource[i] & 255); if ((ssSource[i] & 255) > imaxsat) imaxsat = (ssSource[i] & 255); if ((ssSource[i] & 255) < iminsat) iminsat = (ssSource[i] & 255); if ((bsSource[i] & 255) > imaxbri) imaxbri = (bsSource[i] & 255); if ((bsSource[i] & 255) < iminbri) iminbri = (bsSource[i] & 255); // IJ.showMessage("h:"+minhue+"H:"+maxhue+"s:"+minsat+"S:"+maxsat+"b:"+minbri+"B:"+maxbri); } if (!isRGB) { // get pass or stop filter whichever has a narrower range for (i = 0; i < 256; i++) { if (bin[i] > 0) { rangePassL = i; break; } } for (i = 255; i >= 0; i--) { if (bin[i] > 0) { rangePassH = i; break; } } for (i = 0; i < 256; i++) { if (bin[i] == 0) { rangeStopL = i; break; } } for (i = 255; i >= 0; i--) { if (bin[i] == 0) { rangeStopH = i; break; } } if ((rangePassH - rangePassL) < (rangeStopH - rangeStopL)) { bandPassH.setState(true); bandStopH.setState(false); iminhue = rangePassL; imaxhue = rangePassH; } else { bandPassH.setState(false); bandStopH.setState(true); iminhue = rangeStopL; imaxhue = rangeStopH; } } else { bandPassH.setState(true); bandStopH.setState(false); } adjustMinHue(iminhue); minSlider.setValue(iminhue); adjustMaxHue(imaxhue); maxSlider.setValue(imaxhue); adjustMinSat(iminsat); minSlider2.setValue(iminsat); adjustMaxSat(imaxsat); maxSlider2.setValue(imaxsat); adjustMinBri(iminbri); minSlider3.setValue(iminbri); adjustMaxBri(imaxbri); maxSlider3.setValue(imaxbri); originalB.setEnabled(true); // IJ.showStatus("done"); }
public BandAdjuster() { super("Threshold Colour"); if (instance != null) { instance.toFront(); return; } imp = WindowManager.getCurrentImage(); if (imp == null) { IJ.beep(); IJ.showStatus("No image"); return; } IJ.run("Select None"); thread = new Thread(this, "BandAdjuster"); WindowManager.addWindow(this); instance = this; IJ.register(PasteController.class); ij = IJ.getInstance(); Font font = new Font("SansSerif", Font.PLAIN, 10); GridBagLayout gridbag = new GridBagLayout(); GridBagConstraints c = new GridBagConstraints(); setLayout(gridbag); int y = 0; c.gridx = 0; c.gridy = y; c.gridwidth = 1; c.weightx = 0; c.insets = new Insets(5, 0, 0, 0); labelh = new Label("Hue", Label.CENTER); add(labelh, c); c.gridx = 1; c.gridy = y++; c.gridwidth = 1; c.weightx = 0; c.insets = new Insets(7, 0, 0, 0); labelf = new Label("Filter type", Label.RIGHT); add(labelf, c); // plot c.gridx = 0; c.gridy = y; c.gridwidth = 1; c.fill = c.BOTH; c.anchor = c.CENTER; c.insets = new Insets(0, 5, 0, 0); add(plot, c); // checkboxes panelh = new Panel(); filterTypeH = new CheckboxGroup(); bandPassH = new Checkbox("Pass"); bandPassH.setCheckboxGroup(filterTypeH); bandPassH.addItemListener(this); panelh.add(bandPassH); bandStopH = new Checkbox("Stop"); bandStopH.setCheckboxGroup(filterTypeH); bandStopH.addItemListener(this); panelh.add(bandStopH); bandPassH.setState(true); c.gridx = 1; c.gridy = y++; c.gridwidth = 2; c.insets = new Insets(5, 0, 0, 0); add(panelh, c); // minHue slider minSlider = new Scrollbar(Scrollbar.HORIZONTAL, 0, 1, 0, sliderRange); c.gridx = 0; c.gridy = y++; c.gridwidth = 1; c.weightx = IJ.isMacintosh() ? 90 : 100; c.fill = c.HORIZONTAL; c.insets = new Insets(5, 5, 0, 0); add(minSlider, c); minSlider.addAdjustmentListener(this); minSlider.setUnitIncrement(1); // minHue slider label c.gridx = 1; c.gridwidth = 1; c.weightx = IJ.isMacintosh() ? 10 : 0; c.insets = new Insets(5, 0, 0, 0); label1 = new Label(" ", Label.LEFT); label1.setFont(font); add(label1, c); // maxHue sliderHue maxSlider = new Scrollbar(Scrollbar.HORIZONTAL, 0, 1, 0, sliderRange); c.gridx = 0; c.gridy = y; c.gridwidth = 1; c.weightx = 100; c.insets = new Insets(5, 5, 0, 0); add(maxSlider, c); maxSlider.addAdjustmentListener(this); maxSlider.setUnitIncrement(1); // maxHue slider label c.gridx = 1; c.gridwidth = 1; c.gridy = y++; c.weightx = 0; c.insets = new Insets(5, 0, 0, 0); label2 = new Label(" ", Label.LEFT); label2.setFont(font); add(label2, c); // ===== c.gridx = 0; c.gridy = y++; c.gridwidth = 1; c.weightx = 0; c.insets = new Insets(10, 0, 0, 0); labels = new Label("Saturation", Label.CENTER); add(labels, c); // plot c.gridx = 0; c.gridy = y; c.gridwidth = 1; c.fill = c.BOTH; c.anchor = c.CENTER; c.insets = new Insets(0, 5, 0, 0); add(splot, c); // checkboxes panels = new Panel(); filterTypeS = new CheckboxGroup(); bandPassS = new Checkbox("Pass"); bandPassS.setCheckboxGroup(filterTypeS); bandPassS.addItemListener(this); panels.add(bandPassS); bandStopS = new Checkbox("Stop"); bandStopS.setCheckboxGroup(filterTypeS); bandStopS.addItemListener(this); panels.add(bandStopS); bandPassS.setState(true); c.gridx = 1; c.gridy = y++; c.gridwidth = 2; c.insets = new Insets(5, 0, 0, 0); add(panels, c); // minSat slider minSlider2 = new Scrollbar(Scrollbar.HORIZONTAL, 0, 1, 0, sliderRange); c.gridx = 0; c.gridy = y++; c.gridwidth = 1; c.weightx = IJ.isMacintosh() ? 90 : 100; c.fill = c.HORIZONTAL; c.insets = new Insets(5, 5, 0, 0); add(minSlider2, c); minSlider2.addAdjustmentListener(this); minSlider2.setUnitIncrement(1); // minSat slider label c.gridx = 1; c.gridwidth = 1; c.weightx = IJ.isMacintosh() ? 10 : 0; c.insets = new Insets(5, 0, 0, 0); label3 = new Label(" ", Label.LEFT); label3.setFont(font); add(label3, c); // maxSat slider maxSlider2 = new Scrollbar(Scrollbar.HORIZONTAL, 0, 1, 0, sliderRange); c.gridx = 0; c.gridy = y++; c.gridwidth = 1; c.weightx = 100; c.insets = new Insets(5, 5, 0, 0); add(maxSlider2, c); maxSlider2.addAdjustmentListener(this); maxSlider2.setUnitIncrement(1); // maxSat slider label c.gridx = 1; c.gridwidth = 1; c.weightx = 0; c.insets = new Insets(5, 0, 0, 0); label4 = new Label(" ", Label.LEFT); label4.setFont(font); add(label4, c); // ===== c.gridx = 0; c.gridwidth = 1; c.gridy = y++; c.weightx = 0; c.insets = new Insets(10, 0, 0, 0); labelb = new Label("Brightness", Label.CENTER); add(labelb, c); c.gridx = 0; c.gridwidth = 1; c.gridy = y; c.fill = c.BOTH; c.anchor = c.CENTER; c.insets = new Insets(0, 5, 0, 0); add(bplot, c); // checkboxes panelb = new Panel(); filterTypeB = new CheckboxGroup(); bandPassB = new Checkbox("Pass"); bandPassB.setCheckboxGroup(filterTypeB); bandPassB.addItemListener(this); panelb.add(bandPassB); bandStopB = new Checkbox("Stop"); bandStopB.setCheckboxGroup(filterTypeB); bandStopB.addItemListener(this); panelb.add(bandStopB); bandPassB.setState(true); c.gridx = 1; c.gridy = y++; c.gridwidth = 2; c.insets = new Insets(5, 0, 0, 0); add(panelb, c); // minBri slider minSlider3 = new Scrollbar(Scrollbar.HORIZONTAL, 0, 1, 0, sliderRange); c.gridx = 0; c.gridy = y++; c.gridwidth = 1; c.weightx = IJ.isMacintosh() ? 90 : 100; c.fill = c.HORIZONTAL; c.insets = new Insets(5, 5, 0, 0); add(minSlider3, c); minSlider3.addAdjustmentListener(this); minSlider3.setUnitIncrement(1); // minBri slider label c.gridx = 1; c.gridwidth = 1; c.weightx = IJ.isMacintosh() ? 10 : 0; c.insets = new Insets(5, 0, 0, 0); label5 = new Label(" ", Label.LEFT); label5.setFont(font); add(label5, c); // maxBri slider maxSlider3 = new Scrollbar(Scrollbar.HORIZONTAL, 0, 1, 0, sliderRange); c.gridx = 0; c.gridy = y++; c.gridwidth = 1; c.weightx = 100; c.insets = new Insets(5, 5, 0, 0); add(maxSlider3, c); maxSlider3.addAdjustmentListener(this); maxSlider3.setUnitIncrement(1); // maxBri slider label c.gridx = 1; c.gridwidth = 1; c.weightx = 0; c.insets = new Insets(5, 0, 0, 0); label6 = new Label(" ", Label.LEFT); label6.setFont(font); add(label6, c); // ===== panelt = new Panel(); threshold = new Checkbox("Threshold"); threshold.addItemListener(this); panelt.add(threshold); invert = new Checkbox("Invert"); invert.addItemListener(this); panelt.add(invert); c.gridx = 0; c.gridy = y++; c.gridwidth = 2; c.insets = new Insets(0, 0, 0, 0); add(panelt, c); // buttons panel = new Panel(); // panel.setLayout(new GridLayout(2, 2, 0, 0)); originalB = new Button("Original"); originalB.setEnabled(false); originalB.addActionListener(this); originalB.addKeyListener(ij); panel.add(originalB); filteredB = new Button("Filtered"); filteredB.setEnabled(false); filteredB.addActionListener(this); filteredB.addKeyListener(ij); panel.add(filteredB); stackB = new Button("Stack"); stackB.addActionListener(this); stackB.addKeyListener(ij); panel.add(stackB); helpB = new Button("Help"); helpB.addActionListener(this); helpB.addKeyListener(ij); panel.add(helpB); c.gridx = 0; c.gridy = y++; c.gridwidth = 2; c.insets = new Insets(0, 0, 0, 0); add(panel, c); panelMode = new Panel(); sampleB = new Button("Sample"); sampleB.addActionListener(this); sampleB.addKeyListener(ij); panelMode.add(sampleB); colourMode = new CheckboxGroup(); hsb = new Checkbox("HSB"); hsb.setCheckboxGroup(colourMode); hsb.addItemListener(this); panelMode.add(hsb); hsb.setState(true); rgb = new Checkbox("RGB"); rgb.setCheckboxGroup(colourMode); rgb.addItemListener(this); panelMode.add(rgb); c.gridx = 0; c.gridy = y++; c.gridwidth = 2; c.insets = new Insets(0, 0, 0, 0); add(panelMode, c); addKeyListener(ij); // ImageJ handles keyboard shortcuts pack(); GUI.center(this); setVisible(true); ip = setup(imp); if (ip == null) { imp.unlock(); IJ.beep(); IJ.showStatus("RGB image cannot be thresholded"); return; } thread.start(); }
public void init() { sounds = new TetrisSound(); installNewPiece(); pause_resume_butt.setEnabled(false); start_newgame_butt.addActionListener( new ActionListener() { public void actionPerformed(ActionEvent ae) { if (start_newgame_butt.getLabel().equals("Start")) startGame(); else newGame(); } }); pause_resume_butt.addActionListener( new ActionListener() { public void actionPerformed(ActionEvent ae) { if (pause_resume_butt.getLabel().equals("Pause")) pauseGame(); else resumeGame(); } }); KeyListener key_listener = new KeyAdapter() { public void keyPressed(KeyEvent e) { if (timer.isPaused()) return; if (e.getKeyCode() == 37 || e.getKeyCode() == 39) { int dir = e.getKeyCode() == 37 ? -1 : 1; synchronized (timer) { cur_piece.cut(); cur_piece.setX(cur_piece.getX() + dir); if (!cur_piece.canPaste()) cur_piece.setX(cur_piece.getX() - dir); cur_piece.paste(); } game_grid.repaint(); } else if (e.getKeyCode() == 38) { synchronized (timer) { cur_piece.cut(); cur_piece.rotate(); if (!cur_piece.canPaste()) cur_piece.rotateBack(); cur_piece.paste(); } game_grid.repaint(); } if (e.getKeyCode() == 40) { timer.setFast(true); } } }; start_newgame_butt.addKeyListener(key_listener); pause_resume_butt.addKeyListener(key_listener); Panel right_panel = new Panel(new GridLayout(3, 1)); right_panel.setBackground(BACKGROUND_COLOR); Panel control_panel = new Panel(); control_panel.add(start_newgame_butt); control_panel.add(pause_resume_butt); control_panel.setBackground(BACKGROUND_COLOR); right_panel.add(control_panel); Panel tmp = new Panel(new BorderLayout()); tmp.add("North", new TetrisLabel(" Next Piece:")); tmp.add("Center", next_piece_canvas); tmp.setBackground(BACKGROUND_COLOR); right_panel.add(tmp); Panel stats_panel = new Panel(new GridLayout(4, 2)); stats_panel.add(new TetrisLabel(" Rows Deleted: ")); stats_panel.add(rows_deleted_label); stats_panel.add(new TetrisLabel(" Level: ")); stats_panel.add(level_label); stats_panel.add(new TetrisLabel(" Score: ")); stats_panel.add(score_label); stats_panel.add(new TetrisLabel(" High Score: ")); stats_panel.add(high_score_label); tmp = new Panel(new BorderLayout()); tmp.setBackground(BACKGROUND_COLOR); tmp.add("Center", stats_panel); right_panel.add(tmp); this.setLayout(new GridLayout(1, 2)); this.add(game_grid); this.add(right_panel); this.setBackground(BACKGROUND_COLOR); this.validate(); }