Example usage for com.jgoodies.forms.layout CellConstraints xyw

List of usage examples for com.jgoodies.forms.layout CellConstraints xyw

Introduction

In this page you can find the example usage for com.jgoodies.forms.layout CellConstraints xyw.

Prototype

public CellConstraints xyw(int col, int row, int colSpan) 

Source Link

Document

Sets the column, row, width, and height; uses a height (row span) of 1 and the horizontal and vertical default alignments.

Examples:

 cc.xyw(1, 3, 7); cc.xyw(1, 3, 2); 

Usage

From source file:loci.visbio.data.DataControls.java

License:Open Source License

/** Constructs a tool panel for adjusting data parameters. */
public DataControls(final LogicManager logic) {
    super(logic, "Data", "Controls for managing data");
    frameTable = new Hashtable();

    // list of data objects
    dataRoot = new DefaultMutableTreeNode("Data objects");
    dataModel = new DefaultTreeModel(dataRoot);
    dataTree = new JTree(dataModel);
    dataTree.setRootVisible(false);/*from w  w  w  .  jav  a  2  s.  co m*/
    dataTree.getSelectionModel().setSelectionMode(TreeSelectionModel.SINGLE_TREE_SELECTION);
    dataTree.setVisibleRowCount(8);
    dataTree.addTreeSelectionListener(this);
    final JScrollPane treePane = new JScrollPane(dataTree);
    SwingUtil.configureScrollPane(treePane);

    // add data button
    final JButton addData = new JButton("Add >");
    addData.setActionCommand("addData");
    addData.addActionListener(this);
    if (!LAFUtil.isMacLookAndFeel())
        addData.setMnemonic('a');
    addData.setToolTipText("Adds a new data object to the list");

    // display button
    display = new JButton("Display >");
    display.setActionCommand("display");
    display.addActionListener(this);
    if (!LAFUtil.isMacLookAndFeel())
        display.setMnemonic('d');
    display.setToolTipText("Visualizes the selected data object");

    // controls button
    editData = new JButton("Edit");
    editData.setActionCommand("edit");
    editData.addActionListener(this);
    if (!LAFUtil.isMacLookAndFeel())
        editData.setMnemonic('i');
    editData.setToolTipText("Shows controls for editing the selected data object");

    // export button
    export = new JButton("Export >");
    export.setActionCommand("export");
    export.addActionListener(this);
    if (!LAFUtil.isMacLookAndFeel())
        export.setMnemonic('x');
    export.setToolTipText("Exports the selected data object");

    // remove data button
    removeData = new JButton("Remove");
    removeData.setActionCommand("removeData");
    removeData.addActionListener(this);
    if (!LAFUtil.isMacLookAndFeel())
        removeData.setMnemonic('r');
    removeData.setToolTipText("Removes the selected data object from the list");

    // data information display panel
    dataInfo = new JEditorPane();
    dataInfo.setPreferredSize(new java.awt.Dimension(0, 0));
    dataInfo.setEditable(false);
    dataInfo.setContentType("text/html");
    dataInfo.setToolTipText("Reports information about the selected data object");
    final JScrollPane infoPane = new JScrollPane(dataInfo);
    SwingUtil.configureScrollPane(infoPane);

    doDataInfo(null);

    // new 2D display menu item
    display2D = new JMenuItem("New 2D display...");
    display2D.setMnemonic('2');
    display2D.setActionCommand("new2D");
    display2D.addActionListener(this);

    // new 3D display menu item
    display3D = new JMenuItem("New 3D display...");
    display3D.setMnemonic('3');
    display3D.setActionCommand("new3D");
    display3D.addActionListener(this);
    display3D.setEnabled(DisplayUtil.canDo3D());

    // export panes
    final VisBioFrame bio = lm.getVisBio();
    exporter = new ExportPane(bio);
    sender = new SendToIJPane(bio);

    // lay out buttons
    final ButtonStackBuilder bsb = new ButtonStackBuilder();
    bsb.addGridded(addData);
    bsb.addRelatedGap();
    bsb.addGridded(display);
    bsb.addRelatedGap();
    bsb.addGridded(editData);
    bsb.addRelatedGap();
    bsb.addGridded(export);
    bsb.addRelatedGap();
    bsb.addGridded(removeData);
    final JPanel buttons = bsb.getPanel();

    // lay out components
    final PanelBuilder builder = new PanelBuilder(
            new FormLayout("pref:grow, 3dlu, pref", "pref, 5dlu, fill:200:grow"));
    final CellConstraints cc = new CellConstraints();
    builder.add(treePane, cc.xy(1, 1));
    builder.add(buttons, cc.xy(3, 1));
    builder.add(infoPane, cc.xyw(1, 3, 3));
    add(builder.getPanel());

    // handle file drag and drop
    final BioDropHandler dropHandler = new BioDropHandler(bio);
    ((JComponent) bio.getContentPane()).setTransferHandler(dropHandler);
    dataTree.setTransferHandler(dropHandler);
    dataInfo.setTransferHandler(dropHandler);
}

From source file:loci.visbio.data.ExportPane.java

License:Open Source License

/** Creates a multidimensional data export dialog. */
public ExportPane(final VisBioFrame bio) {
    super("Export data");
    this.bio = bio;
    saver = new BufferedImageWriter();

    // -- Page 1 --

    // folder widgets
    folderField = new JTextField(System.getProperty("user.dir"));
    chooseButton = new JButton("Choose...");
    chooseButton.setMnemonic('h');
    chooseButton.setActionCommand("folder");
    chooseButton.addActionListener(this);

    // pattern fields
    patternField = new JTextField();

    // format combo box
    final String[] formats = new String[] { "TIFF", "MOV" };
    formatBox = new BioComboBox(formats);

    // lay out first page
    final PanelBuilder builder = new PanelBuilder(
            new FormLayout("pref, 3dlu, pref:grow, 3dlu, pref, 3dlu, pref", "pref, 3dlu, pref"));
    final CellConstraints cc = new CellConstraints();
    builder.addLabel("F&older", cc.xy(1, 1)).setLabelFor(folderField);
    builder.add(folderField, cc.xyw(3, 1, 3));
    builder.add(chooseButton, cc.xy(7, 1));

    builder.addLabel("File &pattern", cc.xy(1, 3)).setLabelFor(patternField);
    builder.add(patternField, cc.xy(3, 3));
    builder.addLabel("&Format", cc.xy(5, 3)).setLabelFor(formatBox);
    builder.add(formatBox, cc.xy(7, 3));
    final JPanel first = builder.getPanel();

    // -- Page 2 --

    // pad file numbering with leading zeroes checkbox
    leadingZeroes = new JCheckBox("Pad file numbering with leading zeroes");
    leadingZeroes.setMnemonic('p');

    // frames per second text field
    fps = new JTextField(4);

    // LZW compression checkbox
    lzw = new JCheckBox("LZW compression");
    lzw.setMnemonic('c');

    // lay out second page
    second = new JPanel();
    second.setLayout(new BorderLayout());

    // -- Page 3 --

    // summary text area
    summary = new JEditorPane();
    summary.setEditable(false);// w  w w.  j a v  a2s .c  o  m
    summary.setContentType("text/html");
    final JScrollPane summaryScroll = new JScrollPane(summary);
    SwingUtil.configureScrollPane(summaryScroll);

    // lay out third page
    third = new JPanel();
    third.setLayout(new BorderLayout());

    // lay out pages
    setPages(new JPanel[] { first, second, third });
}

From source file:loci.visbio.data.ExportPane.java

License:Open Source License

/** Handles button press events. */
@Override//from   w  w w  .  j  a v a2 s.co m
public void actionPerformed(final ActionEvent e) {
    final String command = e.getActionCommand();
    if (command.equals("next")) {
        if (page == 0) { // lay out page 2
            // ensure file pattern ends with appropriate format extension
            // also determine visibility of "frames per second" text field
            String pattern = folderField.getText() + File.separator + patternField.getText();
            final String format = (String) formatBox.getSelectedItem();
            final String plow = pattern.toLowerCase();
            boolean doFPS = false, doLZW = false;
            if (format.equals("PIC")) {
                if (!plow.endsWith(".pic"))
                    pattern += ".pic";
            } else if (format.equals("TIFF")) {
                if (!plow.endsWith(".tiff") && !plow.endsWith(".tif")) {
                    pattern += ".tif";
                    doLZW = true;
                }
            } else if (format.equals("MOV")) {
                if (!plow.endsWith(".mov"))
                    pattern += ".mov";
                doFPS = true;
            }

            // parse file pattern
            final StringTokenizer st = new StringTokenizer("#" + pattern + "#", "*");
            tokens = new String[st.countTokens()];
            for (int i = 0; i < tokens.length; i++) {
                String t = st.nextToken();
                if (i == 0)
                    t = t.substring(1);
                if (i == tokens.length - 1)
                    t = t.substring(0, t.length() - 1);
                tokens[i] = t;
            }
            stars = tokens.length - 1;
            final String[] dims = trans.getDimTypes();
            final int q = dims.length - stars;
            if (q < 0 || q > 1) {
                String msg;
                if (dims.length == 0) {
                    msg = "Please specify a single filename (no asterisks).";
                } else if (dims.length == 1) {
                    msg = "Please specify either a single filename (no asterisks) "
                            + "or a file pattern with\none asterisk to indicate where the "
                            + "dimensional axes should be numbered.";
                } else {
                    msg = "Please specify either " + (dims.length - 1) + " or " + dims.length
                            + " asterisks in the file pattern to\nindicate "
                            + "where the dimensional axes should be numbered.";
                }
                JOptionPane.showMessageDialog(dialog, msg, "VisBio", JOptionPane.ERROR_MESSAGE);
                return;
            }

            // determine visibility of "leading zeroes" checkbox
            final boolean doZeroes = stars > 0;

            // build file pattern
            StringBuffer sb = new StringBuffer();
            for (int i = 0; i < stars; i++) {
                sb.append(tokens[i]);
                sb.append("<");
                sb.append((char) ('A' + i));
                sb.append(">");
            }
            sb.append(tokens[stars]);
            final String pat = sb.toString();

            // build list of dimensional axes
            final String[] dimChoices = new String[dims.length];
            for (int i = 0; i < dims.length; i++) {
                dimChoices[i] = "<" + (i + 1) + "> " + dims[i];
            }

            // construct second page panel
            sb = new StringBuffer("pref");
            if (doFPS)
                sb.append(", 3dlu, pref");
            if (doLZW)
                sb.append(", 3dlu, pref");
            if (doZeroes)
                sb.append(", 3dlu, pref");
            for (int i = 0; i < stars; i++) {
                sb.append(", 3dlu, pref");
            }
            final PanelBuilder builder = new PanelBuilder(
                    new FormLayout("pref:grow, 3dlu, pref", sb.toString()));
            final CellConstraints cc = new CellConstraints();
            builder.addSeparator(pat, cc.xyw(1, 1, 3));
            int row = 3;
            if (doFPS) {
                builder.addLabel("&Frames per second", cc.xy(1, row, "right,center")).setLabelFor(fps);
                builder.add(fps, cc.xy(3, row));
                row += 2;
            }
            if (doLZW) {
                builder.add(lzw, cc.xyw(1, row, 3, "right, center"));
                row += 2;
            }
            if (doZeroes) {
                builder.add(leadingZeroes, cc.xyw(1, row, 3, "right,center"));
                row += 2;
            }
            letterBoxes = new BioComboBox[stars];
            for (int i = 0; i < stars; i++) {
                final char letter = (char) ('A' + i);
                builder.addLabel("<" + letter + "> =", cc.xy(1, row, "right,center"));
                letterBoxes[i] = new BioComboBox(dimChoices);
                letterBoxes[i].setSelectedIndex(i);
                builder.add(letterBoxes[i], cc.xy(3, row));
                row += 2;
            }
            second.removeAll();
            second.add(builder.getPanel());
        } else if (page == 1) { // lay out page 3
            final String[] dims = trans.getDimTypes();
            final int[] lengths = trans.getLengths();

            // file pattern
            StringBuffer sb = new StringBuffer("File pattern: ");
            for (int i = 0; i < stars; i++) {
                sb.append(tokens[i]);
                final char letter = (char) ('A' + i);
                sb.append("<");
                sb.append(letter);
                sb.append(">");
            }
            sb.append(tokens[stars]);

            // file format
            sb.append("\nFormat: ");
            final String format = (String) formatBox.getSelectedItem();
            if (format.equals("PIC"))
                sb.append("Bio-Rad PIC file");
            else if (format.equals("TIFF")) {
                if (dims.length == stars)
                    sb.append("TIFF image");
                else
                    sb.append("Multi-page TIFF stack");
                if (lzw.isSelected())
                    sb.append(" (LZW)");
            } else if (format.equals("MOV"))
                sb.append("QuickTime movie");
            else
                sb.append("Unknown");
            sb.append("\n \n");

            // dimensional mappings
            maps = new int[stars];
            if (stars > 0) {
                for (int i = 0; i < stars; i++) {
                    final char letter = (char) ('A' + i);
                    sb.append("<");
                    sb.append(letter);
                    sb.append("> numbered across dimension: ");
                    maps[i] = letterBoxes[i].getSelectedIndex();
                    sb.append("<");
                    sb.append(maps[i] + 1);
                    sb.append("> ");
                    sb.append(dims[maps[i]]);
                    sb.append("\n");
                }
            } else
                sb.append(" \n");

            // count dimensional axis exclusions
            excl = -1;
            final boolean[] b = new boolean[dims.length];
            for (int i = 0; i < stars; i++)
                b[maps[i]] = true;
            int exclude = 0;
            for (int i = 0; i < dims.length; i++) {
                if (!b[i]) {
                    excl = i;
                    exclude++;
                }
            }

            // file contents
            sb.append("Each file will contain ");
            final int q = dims.length - stars;
            if (q == 0)
                sb.append("a single image.\n \n");
            else { // q == 1
                final int len = lengths[excl];
                sb.append(len);
                sb.append(" image");
                if (len != 1)
                    sb.append("s");
                sb.append(" across dimension: <");
                sb.append(excl + 1);
                sb.append("> ");
                sb.append(dims[excl]);
                sb.append("\n \n");
            }

            // verify dimensional axis mappings are acceptable
            if (exclude != q) {
                JOptionPane.showMessageDialog(dialog, "Please map each letter to a different dimensional axis.",
                        "VisBio", JOptionPane.ERROR_MESSAGE);
                return;
            }

            // verify number of range components is acceptable
            final int rangeCount = trans.getRangeCount();
            if (format.equals("PIC") && rangeCount != 1) {
                JOptionPane.showMessageDialog(dialog,
                        "Bio-Rad PIC format requires a data object with a single "
                                + "range component. Please subsample your data object accordingly.",
                        "VisBio", JOptionPane.ERROR_MESSAGE);
                return;
            } else if (rangeCount != 1 && rangeCount != 3) {
                JOptionPane.showMessageDialog(dialog,
                        format + " format requires a data object with either 1 or 3 "
                                + "range components. Please subsample your data object accordingly.",
                        "VisBio", JOptionPane.ERROR_MESSAGE);
                return;
            }

            // number of files
            final boolean padZeroes = leadingZeroes.isSelected();
            sb.append("\nFirst file: ");
            for (int i = 0; i < stars; i++) {
                sb.append(tokens[i]);
                if (padZeroes) {
                    final int len = ("" + lengths[maps[i]]).length() - 1;
                    for (int j = 0; j < len; j++)
                        sb.append("0");
                }
                sb.append("1");
            }
            sb.append(tokens[stars]);
            sb.append("\nLast file: ");
            numFiles = 1;
            for (int i = 0; i < stars; i++) {
                sb.append(tokens[i]);
                sb.append(lengths[maps[i]]);
                numFiles *= lengths[maps[i]];
            }
            sb.append(tokens[stars]);
            sb.append("\nTotal number of files: ");
            sb.append(numFiles);

            // construct third page panel
            final StringTokenizer st = new StringTokenizer(sb.toString(), "\n");
            final int numLines = st.countTokens();
            sb = new StringBuffer("pref, 3dlu");
            for (int i = 0; i < numLines; i++)
                sb.append(", pref");
            sb.append(", 5dlu");
            final PanelBuilder builder = new PanelBuilder(new FormLayout("pref:grow", sb.toString()));
            final CellConstraints cc = new CellConstraints();
            builder.addSeparator("Summary", cc.xy(1, 1));
            for (int i = 0; i < numLines; i++) {
                builder.addLabel(st.nextToken(), cc.xy(1, i + 3));
            }
            third.removeAll();
            third.add(builder.getPanel());
        }

        super.actionPerformed(e);
    } else if (command.equals("folder")) {
        // pop up folder chooser
        File dir = new File(folderField.getText());
        final JFileChooser chooser = dir.isDirectory() ? new JFileChooser(dir) : new JFileChooser();
        chooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
        if (chooser.showOpenDialog(this) == JFileChooser.APPROVE_OPTION) {
            dir = chooser.getSelectedFile();
            if (dir != null)
                folderField.setText(dir.getPath());
        }
    } else
        super.actionPerformed(e);
}

From source file:loci.visbio.data.SamplingWidget.java

License:Open Source License

public SamplingWidget(final DataSampling sampling) {
    super();/*from  w  w  w . j a  v  a  2  s.  c  om*/
    this.sampling = sampling;

    final int[] lengths = sampling.getLengths();
    final String[] dims = sampling.getDimTypes();
    final int[] min = sampling.getMin();
    final int[] max = sampling.getMax();
    final int[] step = sampling.getStep();
    final int resX = sampling.getImageWidth();
    final int resY = sampling.getImageHeight();
    final boolean[] range = sampling.getRange();

    widthField = new JTextField("" + resX, 4);
    heightField = new JTextField("" + resY, 4);

    minFields = new JTextField[min.length];
    maxFields = new JTextField[max.length];
    stepFields = new JTextField[step.length];
    for (int i = 0; i < lengths.length; i++) {
        minFields[i] = new JTextField("" + min[i], 4);
        maxFields[i] = new JTextField("" + max[i], 4);
        stepFields[i] = new JTextField("" + step[i], 4);
    }

    final JPanel rangePanel = new JPanel();
    rangePanel.add(new JLabel("Range components"));
    rangeBoxes = new JCheckBox[range.length];
    for (int i = 0; i < range.length; i++) {
        rangeBoxes[i] = new JCheckBox("" + (i + 1), range[i]);
        if (i < 9 && !LAFUtil.isMacLookAndFeel()) {
            rangeBoxes[i].setMnemonic('1' + i);
        }
        rangePanel.add(rangeBoxes[i]);
    }

    final JButton apply = new JButton("Apply");
    if (!LAFUtil.isMacLookAndFeel())
        apply.setMnemonic('a');
    apply.addActionListener(this);

    // lay out components
    final StringBuffer sb = new StringBuffer("pref, 3dlu, ");
    for (int i = 0; i < lengths.length; i++)
        sb.append("pref, 3dlu, ");
    sb.append("pref, 3dlu, pref");
    final FormLayout layout = new FormLayout("pref, 3dlu, pref, 3dlu, pref, 3dlu, pref, 3dlu, pref, 3dlu, pref",
            sb.toString());
    final PanelBuilder builder = new PanelBuilder(layout);
    final CellConstraints cc = new CellConstraints();
    builder.addLabel("Image &resolution", cc.xyw(1, 1, 5));
    builder.add(widthField, cc.xy(7, 1));
    builder.addLabel("&by", cc.xy(9, 1));
    builder.add(heightField, cc.xy(11, 1));
    for (int i = 0; i < lengths.length; i++) {
        final int row = 2 * i + 3;
        builder.addLabel("<" + (i + 1) + "> " + dims[i], cc.xy(1, row));
        builder.add(minFields[i], cc.xy(3, row));
        builder.addLabel("to", cc.xy(5, row));
        builder.add(maxFields[i], cc.xy(7, row));
        builder.addLabel("step", cc.xy(9, row));
        builder.add(stepFields[i], cc.xy(11, row));
    }
    builder.add(rangePanel, cc.xyw(1, 2 * lengths.length + 3, 11));
    builder.add(ButtonBarFactory.buildCenteredBar(apply), cc.xyw(1, 2 * lengths.length + 5, 11));

    setLayout(new BorderLayout());
    add(builder.getPanel());
}

From source file:loci.visbio.data.SendToIJPane.java

License:Open Source License

/** Lays out components before displaying the dialog. */
@Override//from   w ww  . ja v  a 2 s . c  o  m
protected int showDialog() {
    if (trans == null)
        return DialogPane.CANCEL_OPTION;
    removeAll();
    stackAxis.removeActionListener(this);
    stackAxis.removeAllItems();
    stackAxis.addItem("None");
    final int[] lengths = trans.getLengths();
    final String[] dims = trans.getDimTypes();
    bsw = new BioSlideWidget[lengths.length];
    if (bsw.length > 0) {
        final StringBuffer sb = new StringBuffer();
        for (int i = 0; i < bsw.length; i++) {
            bsw[i] = new BioSlideWidget(trans, i);
            stackAxis.addItem("<" + (i + 1) + "> " + dims[i]);
            if (i > 0)
                sb.append(", 3dlu, ");
            sb.append("pref");
        }
        stackAxis.addActionListener(this);
        sb.append(", 3dlu, pref");
        final PanelBuilder builder = new PanelBuilder(new FormLayout("pref:grow, 3dlu, pref", sb.toString()));
        final CellConstraints cc = new CellConstraints();
        for (int i = 0; i < bsw.length; i++) {
            builder.add(bsw[i], cc.xyw(1, 2 * i + 1, 3));
        }
        final int row = 2 * bsw.length + 1;
        builder.addLabel("Stack &axis", cc.xy(1, row, "right, center")).setLabelFor(stackAxis);
        builder.add(stackAxis, cc.xy(3, row));
        add(builder.getPanel());
    }
    return super.showDialog();
}

From source file:loci.visbio.data.SliceWidget.java

License:Open Source License

/** Creates a new arbitrary slice widget. */
public SliceWidget(final ArbitrarySlice slice) {
    super();//from  w w  w. j a  va 2s . c om
    this.slice = slice;

    final DataTransform parent = slice.getParent();
    final String[] types = parent.getDimTypes();

    // create combo box for selecting which axis to slice through
    final String[] names = new String[types.length];
    for (int i = 0; i < names.length; i++)
        names[i] = (i + 1) + ": " + types[i];
    axes = new BioComboBox(names);
    axes.setSelectedIndex(slice.getAxis());
    axes.addItemListener(this);

    // create yaw slider
    int value = (int) slice.getYaw();
    yaw = new JSlider(-90, 90, value);
    yaw.addChangeListener(this);
    yawValue = new JLabel("" + value + DEGREES);

    // create pitch slider
    value = (int) slice.getPitch();
    pitch = new JSlider(-90, 90, value);
    pitch.setMajorTickSpacing(45);
    pitch.setMinorTickSpacing(5);
    pitch.setPaintTicks(true);
    pitch.addChangeListener(this);
    pitchValue = new JLabel("" + value + DEGREES);

    // create location slider
    value = (int) slice.getLocation();
    location = new JSlider(0, 100, value);
    location.setMajorTickSpacing(25);
    location.setMinorTickSpacing(5);
    location.setPaintTicks(true);
    location.addChangeListener(this);
    locationValue = new JLabel(value + "%");

    // create resolution slider
    final int min = 64, max = 896;
    value = slice.getResolution();
    res = new JSlider(min, max, value);
    res.setMajorTickSpacing(max / 4);
    res.setMinorTickSpacing(max / 16);
    res.setPaintTicks(true);
    res.addChangeListener(this);
    resValue = new JLabel(value + " x " + value);
    resValue.setPreferredSize(new JLabel(max + " x " + max).getPreferredSize());

    // create slicing line visibility checkbox
    showLine = new JCheckBox("Show white slicing line", true);
    showLine.setMnemonic('l');
    showLine.addChangeListener(this);

    // create on-the-fly slice recompution checkbox
    recompute = new JCheckBox("Recompute slice on the fly", true);
    recompute.setMnemonic('f');
    recompute.addChangeListener(this);

    // lay out components
    final PanelBuilder builder = new PanelBuilder(new FormLayout("pref, 3dlu, pref:grow, 3dlu, pref",
            "pref, 3dlu, pref, 3dlu, " + "pref, 3dlu, pref, 3dlu, pref, 3dlu, pref, 3dlu, pref"));
    final CellConstraints cc = new CellConstraints();
    builder.add(FormsUtil.makeRow("&Dimension to slice", axes), cc.xyw(1, 1, 5));

    builder.addLabel("&Yaw", cc.xy(1, 3)).setLabelFor(yaw);
    builder.add(yaw, cc.xy(3, 3));
    builder.add(yawValue, cc.xy(5, 3));

    builder.addLabel("&Pitch", cc.xy(1, 5)).setLabelFor(pitch);
    builder.add(pitch, cc.xy(3, 5));
    builder.add(pitchValue, cc.xy(5, 5));

    builder.addLabel("&Location", cc.xy(1, 7)).setLabelFor(location);
    builder.add(location, cc.xy(3, 7));
    builder.add(locationValue, cc.xy(5, 7));

    builder.addLabel("&Resolution", cc.xy(1, 9)).setLabelFor(res);
    builder.add(res, cc.xy(3, 9));
    builder.add(resValue, cc.xy(5, 9));

    builder.add(showLine, cc.xyw(1, 11, 3));

    builder.add(recompute, cc.xyw(1, 13, 3));

    setLayout(new BorderLayout());
    add(builder.getPanel());
}

From source file:loci.visbio.ext.FunctionWidget.java

License:Open Source License

public FunctionWidget(final ExternalFunction function) {
    super();//from   ww w.  j  a v  a 2s  .c o m
    this.function = function;

    final String[] names = function.getParameterNames();
    final String[] params = function.getParameters();

    // create text fields
    paramFields = new JTextField[params.length];
    for (int i = 0; i < params.length; i++) {
        paramFields[i] = new JTextField(8);
        paramFields[i].setText(params[i]);
    }

    // create apply button
    final JButton apply = new JButton("Apply");
    if (!LAFUtil.isMacLookAndFeel())
        apply.setMnemonic('a');
    apply.addActionListener(this);

    // lay out components
    final StringBuffer sb = new StringBuffer("pref");
    for (int i = 1; i < paramFields.length; i++)
        sb.append(", 3dlu, pref");
    sb.append(", 9dlu, pref");
    final PanelBuilder builder = new PanelBuilder(new FormLayout("pref, 3dlu, pref:grow", sb.toString()));
    final CellConstraints cc = new CellConstraints();
    for (int i = 0; i < paramFields.length; i++) {
        final int row = 2 * i + 1;
        builder.addLabel(names[i], cc.xy(1, row));
        builder.add(paramFields[i], cc.xy(3, row));
    }
    builder.add(ButtonBarFactory.buildCenteredBar(apply), cc.xyw(1, 2 * paramFields.length + 1, 3));

    setLayout(new BorderLayout());
    add(builder.getPanel());
}

From source file:loci.visbio.help.HelpManager.java

License:Open Source License

/**
 * Prompts user for whether to visualize the currently selected data object.
 *///from www . j  a  v  a 2  s  .c  o  m
public void checkVisualization() {
    final DataManager dm = (DataManager) bio.getManager(DataManager.class);
    final DataTransform data = dm.getSelectedData();
    if (data.getParent() != null)
        return; // ask for top-level objects only

    // determine whether data can be displayed in 2D and/or 3D
    final boolean isData = data != null;
    final boolean canDisplay2D = data != null && data.canDisplay2D();
    final boolean canDisplay3D = data != null && data.canDisplay3D() && DisplayUtil.canDo3D();
    final boolean canDisplay = canDisplay2D || canDisplay3D;

    if (canDisplay) {
        // create option for 3D visualization
        final ButtonGroup buttons = new ButtonGroup();
        final JRadioButton vis3D = new JRadioButton("In 3D", canDisplay3D);
        vis3D.setEnabled(canDisplay3D);
        if (!LAFUtil.isMacLookAndFeel())
            vis3D.setMnemonic('3');
        buttons.add(vis3D);

        // create option for 2D visualization
        final JRadioButton vis2D = new JRadioButton("In 2D", !canDisplay3D);
        vis2D.setEnabled(canDisplay2D);
        if (!LAFUtil.isMacLookAndFeel())
            vis2D.setMnemonic('2');
        buttons.add(vis2D);

        // create option for 2D visualization w/ overlays
        final JRadioButton visOver = new JRadioButton("In 2D with overlays", !canDisplay3D);
        visOver.setEnabled(canDisplay2D);
        if (!LAFUtil.isMacLookAndFeel())
            visOver.setMnemonic('o');
        buttons.add(visOver);

        // create option for no visualization
        final JRadioButton visNot = new JRadioButton("Not now");
        if (!LAFUtil.isMacLookAndFeel())
            visNot.setMnemonic('n');
        buttons.add(visNot);

        // create panel for asking user about immediate visualization
        final PanelBuilder builder = new PanelBuilder(new FormLayout("15dlu, pref:grow, 15dlu",
                "pref, 3dlu, pref, 3dlu, pref, 3dlu, pref, 3dlu, pref"));
        final CellConstraints cc = new CellConstraints();
        builder.addLabel("Would you like to visualize the \"" + data + "\" object now?", cc.xyw(1, 1, 3));
        builder.add(vis3D, cc.xy(2, 3));
        builder.add(vis2D, cc.xy(2, 5));
        builder.add(visOver, cc.xy(2, 7));
        builder.add(visNot, cc.xy(2, 9));

        final JPanel visPanel = builder.getPanel();

        // display message pane
        final DataControls dc = dm.getControls();
        final OptionManager om = (OptionManager) bio.getManager(OptionManager.class);
        final boolean success = om.checkMessage(dc, DISPLAY_DATA, false, visPanel, "VisBio");
        if (success && !visNot.isSelected()) {
            if (!visOver.isSelected())
                dc.doNewDisplay(vis3D.isSelected());
            else
                dc.doNewDisplayWithOverlays();
        }
    }
}

From source file:loci.visbio.overlays.OverlayWidget.java

License:Open Source License

/** Creates overlay GUI controls. */
public OverlayWidget(final OverlayTransform overlay) {
    super();/*from   w  w  w .ja v a 2s  .  c  om*/
    this.overlay = overlay;
    buttonGroup = new ButtonGroup();

    // list of tools
    final OverlayTool[] toolList = { new PointerTool(overlay), new LineTool(overlay), new FreeformTool(overlay),
            new MarkerTool(overlay), new TextTool(overlay), new OvalTool(overlay), new BoxTool(overlay),
            new ArrowTool(overlay), new PolylineTool(overlay), };
    tools = new Vector(toolList.length);

    // tool buttons
    buttons = new Vector(toolList.length);
    for (int i = 0; i < toolList.length; i++)
        addTool(toolList[i]);
    final Object[] buttonList = new Object[buttons.size()];
    buttons.copyInto(buttonList);
    final JPanel toolsRow = FormsUtil.makeRow(buttonList);

    // file chooser for loading overlays
    overlayLoadBox = new JFileChooser();
    overlayLoadBox
            .addChoosableFileFilter(new ExtensionFileFilter(new String[] { "txt" }, "Overlay text files"));

    // file chooser for saving overlays
    overlaySaveBox = new JFileChooser();
    overlaySaveBox
            .addChoosableFileFilter(new ExtensionFileFilter(new String[] { "txt" }, "Overlay text files"));
    overlaySaveBox.setAccessory(new StatsOptionsPane());

    overlayXLSBox = new JFileChooser();
    overlayXLSBox.addChoosableFileFilter(
            new ExtensionFileFilter(new String[] { "xls" }, "Overlay spreadsheet files"));
    overlayXLSBox.setAccessory(new StatsOptionsPane());

    // current font text field
    currentFont = new JTextField();
    currentFont.setEditable(false);
    currentFont.setToolTipText("Font used for text overlays");
    refreshCurrentFont();

    // font chooser button
    chooseFont = new JButton("Change...");
    chooseFont.addActionListener(this);
    if (!LAFUtil.isMacLookAndFeel())
        chooseFont.setMnemonic('h');
    chooseFont.setToolTipText("Configures font used for text overlays");
    final JPanel fontRow = FormsUtil.makeRow(new Object[] { "Font", currentFont, chooseFont },
            new boolean[] { false, true, false });

    // overlay list
    overlayListModel = new DefaultListModel();
    overlayList = new JList(overlayListModel);
    overlayList.addListSelectionListener(this);
    overlayList.setToolTipText("Overlays at the current dimensional position");
    final JScrollPane overlayScroll = new JScrollPane(overlayList);
    SwingUtil.configureScrollPane(overlayScroll);
    overlayScroll.setPreferredSize(new Dimension(120, 0));

    // text fields for (X, Y) coordinate pairs
    final int textWidth = 12;
    x1 = new JTextField(textWidth);
    y1 = new JTextField(textWidth);
    x2 = new JTextField(textWidth);
    y2 = new JTextField(textWidth);
    x1.setEnabled(false);
    y1.setEnabled(false);
    x2.setEnabled(false);
    y2.setEnabled(false);
    x1.getDocument().addDocumentListener(this);
    y1.getDocument().addDocumentListener(this);
    x2.getDocument().addDocumentListener(this);
    y2.getDocument().addDocumentListener(this);
    x1.setToolTipText("First X coordinate of selected overlays");
    y1.setToolTipText("First Y coordinate of selected overlays");
    x2.setToolTipText("Second X coordinate of selected overlays");
    y2.setToolTipText("Second Y coordinate of selected overlays");

    // text text field ;-)
    text = new JTextField(2 * textWidth);
    text.getDocument().addDocumentListener(this);
    text.setToolTipText("Text displayed for the selected text overlays");

    // color chooser
    color = new JButton();
    color.addActionListener(this);
    color.setBackground(Color.white);
    color.setToolTipText("The color of the selected overlays");

    // filled checkbox
    filled = new JCheckBox("Filled");
    filled.addActionListener(this);
    if (!LAFUtil.isMacLookAndFeel())
        filled.setMnemonic('f');
    filled.setToolTipText("Whether the selected overlays are filled in or outlined");

    // group selector
    groupList = new BioComboBox();
    groupList.addItem("None");
    groupList.addActionListener(this);
    groupList.setToolTipText("The overlay group to which the selected overlays belong");

    // new group button
    newGroup = new JButton("New...");
    newGroup.addActionListener(this);
    if (!LAFUtil.isMacLookAndFeel())
        newGroup.setMnemonic('n');
    newGroup.setToolTipText("Creates a new overlay group");

    // notes text field
    notes = new JTextField(2 * textWidth);
    notes.getDocument().addDocumentListener(this);
    notes.setToolTipText("Miscellaneous notes associated with the selected overlays");

    // stats text area
    stats = new JTextArea(7, 3 * textWidth);
    stats.setEditable(false);
    stats.setBorder(new EtchedBorder());
    stats.setToolTipText("Statistics for the selected overlay");

    // overlay removal button
    remove = new JButton("Remove");
    remove.setEnabled(false);
    remove.addActionListener(this);
    if (!LAFUtil.isMacLookAndFeel())
        remove.setMnemonic('r');
    remove.setToolTipText("Deletes the selected overlays");

    // overlay copy button
    copy = new JButton("Copy");
    copy.setEnabled(false);
    copy.addActionListener(this);
    if (!LAFUtil.isMacLookAndFeel())
        copy.setMnemonic('c');
    copy.setToolTipText("Copies selected overlays to the clipboard");

    // overlay paste button
    paste = new JButton("Paste");
    paste.setEnabled(false);
    paste.addActionListener(this);
    if (!LAFUtil.isMacLookAndFeel())
        paste.setMnemonic('p');
    paste.setToolTipText("Pastes overlays from the clipboard");

    // overlay distribution button
    dist = new JButton("Distribute");
    dist.addActionListener(this);
    if (!LAFUtil.isMacLookAndFeel())
        dist.setMnemonic('d');
    dist.setToolTipText("Distributes an overlay evenly between " + "copied location and selected location");

    // overlay loading button
    load = new JButton("Load overlays...");
    load.addActionListener(this);
    if (!LAFUtil.isMacLookAndFeel())
        load.setMnemonic('l');
    load.setToolTipText("Loads overlays from a text file on disk");

    // overlay saving button
    save = new JButton("Save overlays...");
    save.addActionListener(this);
    if (!LAFUtil.isMacLookAndFeel())
        save.setMnemonic('s');
    save.setToolTipText("Saves overlays to a text file on disk");

    // overlay export button
    export = new JButton("Export overlays...");
    export.addActionListener(this);
    if (!LAFUtil.isMacLookAndFeel())
        export.setMnemonic('e');
    export.setToolTipText("Exports overlays to a .xls file on disk");

    // lay out components
    setLayout(new BorderLayout());
    final FormLayout layout = new FormLayout("pref, 5dlu, pref, 3dlu, pref:grow, 5dlu, pref, 3dlu, pref:grow",
            "pref, 3dlu, pref, 9dlu, pref, 3dlu, pref, 9dlu, pref, 3dlu, pref, "
                    + "3dlu, pref, 3dlu, pref, 3dlu, pref, 3dlu, pref, 3dlu, pref, "
                    + "3dlu, pref, 9dlu, pref, 3dlu, fill:pref:grow");
    final PanelBuilder builder = new PanelBuilder(layout);
    final CellConstraints cc = new CellConstraints();

    int row = 1;
    builder.addSeparator("Tools", cc.xyw(1, row, 9));
    row += 2;
    builder.add(toolsRow, cc.xyw(1, row, 9));
    row += 2;
    builder.addSeparator("Overlays", cc.xyw(1, row, 9));
    row += 2;
    builder.add(fontRow, cc.xyw(1, row, 9));
    row += 2;
    builder.add(overlayScroll, cc.xywh(1, row, 1, 11));
    builder.addLabel("X1", cc.xy(3, row));
    builder.add(x1, cc.xy(5, row));
    builder.addLabel("Y1", cc.xy(7, row));
    builder.add(y1, cc.xy(9, row));
    row += 2;
    builder.addLabel("X2", cc.xy(3, row));
    builder.add(x2, cc.xy(5, row));
    builder.addLabel("Y2", cc.xy(7, row));
    builder.add(y2, cc.xy(9, row));
    row += 2;
    builder.addLabel("Text", cc.xy(3, row));
    builder.add(text, cc.xyw(5, row, 5));
    row += 2;
    builder.addLabel("Color", cc.xy(3, row));
    builder.add(color, cc.xy(5, row, "fill, fill"));
    builder.add(filled, cc.xyw(7, row, 3));
    row += 2;
    builder.addLabel("Group", cc.xy(3, row));
    builder.add(groupList, cc.xy(5, row));
    builder.add(newGroup, cc.xyw(7, row, 3, "left, center"));
    row += 2;
    builder.addLabel("Notes", cc.xy(3, row));
    builder.add(notes, cc.xyw(5, row, 5));
    row += 2;
    builder.add(ButtonBarFactory.buildCenteredBar(new JButton[] { remove, copy, paste, dist }),
            cc.xyw(1, row, 9, "center, center"));
    row += 2;
    builder.add(ButtonBarFactory.buildCenteredBar(new JButton[] { load, save, export }),
            cc.xyw(1, row, 9, "center, center"));
    row += 2;
    builder.addSeparator("Statistics", cc.xyw(1, row, 9));
    row += 2;
    builder.add(stats, cc.xyw(1, row, 9));

    layout.setColumnGroups(new int[][] { { 5, 9 } });
    add(builder.getPanel());

    overlay.addTransformListener(this);

    // widget refresh timer
    refreshTimer = new Timer(200, this);
    refreshTimer.start();
}

From source file:loci.visbio.PanelManager.java

License:Open Source License

/** Called to notify the logic manager of a VisBio event. */
@Override/*from   w  ww  .ja va2s. c  o  m*/
public void doEvent(final VisBioEvent evt) {
    final int eventType = evt.getEventType();
    if (eventType == VisBioEvent.LOGIC_ADDED) {
        final Object src = evt.getSource();
        if (src == this)
            doGUI();
        else if (src instanceof ExitManager) {
            // HACK - finalize control panel layout
            bio.setSplashStatus("Initializing control panels");

            // lay out control panels
            final String pad = "9dlu";
            final String[] cols = new String[numCols];
            final String[] rows = new String[numRows];
            Arrays.fill(cols, pad);
            Arrays.fill(rows, pad);
            for (int i = 0; i < panels.size(); i++) {
                final ControlPanel cpl = (ControlPanel) panels.elementAt(i);
                final Point p = (Point) coords.elementAt(i);
                final Dimension d = (Dimension) sizes.elementAt(i);
                final int xx = p.x;
                final int yy = p.y;
                final int ww = d.width;
                final int hh = d.height;
                final String colString = (String) colStrings.elementAt(i);
                final String rowString = (String) rowStrings.elementAt(i);
                cols[xx - 1] = colString;
                rows[yy - 1] = "pref";
                rows[yy] = "3dlu";
                rows[yy + 1] = rowString;
            }
            final StringBuffer cbuf = new StringBuffer(cols[0]);
            for (int i = 1; i < cols.length; i++) {
                cbuf.append(",");
                cbuf.append(cols[i]);
            }
            final StringBuffer rbuf = new StringBuffer(rows[0]);
            for (int i = 1; i < rows.length; i++) {
                rbuf.append(",");
                rbuf.append(rows[i]);
            }
            final PanelBuilder builder = new PanelBuilder(new FormLayout(cbuf.toString(), rbuf.toString()));
            builder.setDefaultDialogBorder();
            final CellConstraints cc = new CellConstraints();
            for (int i = 0; i < panels.size(); i++) {
                final ControlPanel cpl = (ControlPanel) panels.elementAt(i);
                final Point p = (Point) coords.elementAt(i);
                final Dimension d = (Dimension) sizes.elementAt(i);
                final int xx = p.x;
                final int yy = p.y;
                final int ww = d.width;
                final int hh = d.height;
                builder.addSeparator(cpl.getName(), cc.xyw(xx, yy, ww));
                builder.add(cpl, cc.xywh(xx, yy + 2, ww, hh, "fill,fill"));
            }
            bio.setContentPane(builder.getPanel());
        }
    }
}