/* * The MIT License (MIT) * * Copyright (c) 2007-2015 Broad Institute * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. * * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ /* * SortDialog.java * * Created on December 12, 2007, 12:55 AM */ package org.broad.igv.ui.util; import javax.swing.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.util.ArrayList; import java.util.List; /** * @author eflakes */ public class SortDialog extends javax.swing.JDialog { private boolean isCanceled = true; /** * Creates new form SortDialog */ public SortDialog(java.awt.Frame parent, boolean modal, Object[] data) { super(parent, modal); initComponents(); if (data != null) setModel(data); okButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { isCanceled = false; setVisible(false); } }); cancelButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { isCanceled = true; setVisible(false); } }); setLocationRelativeTo(parent); } public boolean[] isAscending() { boolean[] isAscending = new boolean[3]; isAscending[0] = acsendingRadioButton1.isSelected(); isAscending[1] = acsendingRadioButton2.isSelected(); isAscending[2] = acsendingRadioButton3.isSelected(); return isAscending; } private void setModel(Object sortKeys[]) { if (sortKeys == null || sortKeys.length < 1) return; Object dataModel[] = new Object[sortKeys.length + 1]; dataModel[0] = null; for (int i = 0; i < sortKeys.length; i++) { dataModel[i + 1] = sortKeys[i]; } sortByComboBox.setModel(new DefaultComboBoxModel(dataModel)); sortByComboBox.setSelectedIndex(0); thenBy1ComboBox.setModel(new DefaultComboBoxModel(dataModel)); thenBy1ComboBox.setSelectedIndex(0); thenBy2ComboBox.setModel(new DefaultComboBoxModel(dataModel)); thenBy2ComboBox.setSelectedIndex(0); } public String[] getSelectedSortKeys() { int arraySize = 0; List<String> selected = new ArrayList<String>(); String item1 = ((String) sortByComboBox.getSelectedItem()); if (item1 != null) { selected.add(item1); ++arraySize; } String item2 = ((String) thenBy1ComboBox.getSelectedItem()); if (item2 != null) { selected.add(item2); ++arraySize; } String item3 = ((String) thenBy2ComboBox.getSelectedItem()); if (item3 != null) { selected.add(item3); ++arraySize; } String selectedSortKeys[] = selected.toArray(new String[arraySize]); return selectedSortKeys; } public boolean isCanceled() { return isCanceled; } /** * This method is called from within the constructor to * initialize the form. * WARNING: Do NOT modify this code. The content of this method is * always regenerated by the Form Editor. */ // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents private void initComponents() { sortOrderButtonGroup = new javax.swing.ButtonGroup(); sortOrderButtonGroup2 = new javax.swing.ButtonGroup(); sortOrderButtonGroup3 = new javax.swing.ButtonGroup(); sortByComboBox = new javax.swing.JComboBox(); thenBy1ComboBox = new javax.swing.JComboBox(); thenBy2ComboBox = new javax.swing.JComboBox(); acsendingRadioButton1 = new javax.swing.JRadioButton(); descendingRadioButton1 = new javax.swing.JRadioButton(); sortByLabel = new javax.swing.JLabel(); thenBy1Label = new javax.swing.JLabel(); thenBy2Label = new javax.swing.JLabel(); okButton = new javax.swing.JButton(); cancelButton = new javax.swing.JButton(); jSeparator1 = new javax.swing.JSeparator(); jSeparator2 = new javax.swing.JSeparator(); jSeparator3 = new javax.swing.JSeparator(); jSeparator4 = new javax.swing.JSeparator(); descendingRadioButton2 = new javax.swing.JRadioButton(); acsendingRadioButton2 = new javax.swing.JRadioButton(); descendingRadioButton3 = new javax.swing.JRadioButton(); acsendingRadioButton3 = new javax.swing.JRadioButton(); setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE); setTitle("Sort"); setMinimumSize(new java.awt.Dimension(330, 300)); setName("Sort"); // NOI18N setResizable(false); getContentPane().setLayout(new org.netbeans.lib.awtextra.AbsoluteLayout()); getContentPane().add(sortByComboBox, new org.netbeans.lib.awtextra.AbsoluteConstraints(20, 60, 210, -1)); getContentPane().add(thenBy1ComboBox, new org.netbeans.lib.awtextra.AbsoluteConstraints(20, 120, 210, -1)); getContentPane().add(thenBy2ComboBox, new org.netbeans.lib.awtextra.AbsoluteConstraints(20, 180, 210, -1)); sortOrderButtonGroup.add(acsendingRadioButton1); acsendingRadioButton1.setSelected(true); acsendingRadioButton1.setText("Ascending"); acsendingRadioButton1.setBorder(javax.swing.BorderFactory.createEmptyBorder(0, 0, 0, 0)); acsendingRadioButton1.setMargin(new java.awt.Insets(0, 0, 0, 0)); getContentPane().add(acsendingRadioButton1, new org.netbeans.lib.awtextra.AbsoluteConstraints(250, 60, -1, -1)); sortOrderButtonGroup.add(descendingRadioButton1); descendingRadioButton1.setText("Descending"); descendingRadioButton1.setBorder(javax.swing.BorderFactory.createEmptyBorder(0, 0, 0, 0)); descendingRadioButton1.setMargin(new java.awt.Insets(0, 0, 0, 0)); getContentPane().add(descendingRadioButton1, new org.netbeans.lib.awtextra.AbsoluteConstraints(250, 80, -1, -1)); sortByLabel.setBackground(new java.awt.Color(204, 204, 255)); sortByLabel.setText("Sort by"); getContentPane().add(sortByLabel, new org.netbeans.lib.awtextra.AbsoluteConstraints(20, 40, -1, -1)); thenBy1Label.setText("Then by"); getContentPane().add(thenBy1Label, new org.netbeans.lib.awtextra.AbsoluteConstraints(20, 100, -1, -1)); thenBy2Label.setText("Then by"); getContentPane().add(thenBy2Label, new org.netbeans.lib.awtextra.AbsoluteConstraints(20, 160, -1, -1)); okButton.setText("Ok"); getContentPane().add(okButton, new org.netbeans.lib.awtextra.AbsoluteConstraints(90, 240, 90, -1)); cancelButton.setText("Cancel"); getContentPane().add(cancelButton, new org.netbeans.lib.awtextra.AbsoluteConstraints(190, 240, 90, -1)); getContentPane().add(jSeparator1, new org.netbeans.lib.awtextra.AbsoluteConstraints(70, 50, 280, 10)); getContentPane().add(jSeparator2, new org.netbeans.lib.awtextra.AbsoluteConstraints(70, 110, 280, 10)); getContentPane().add(jSeparator3, new org.netbeans.lib.awtextra.AbsoluteConstraints(70, 170, 280, 10)); getContentPane().add(jSeparator4, new org.netbeans.lib.awtextra.AbsoluteConstraints(0, 288, 390, -1)); sortOrderButtonGroup2.add(descendingRadioButton2); descendingRadioButton2.setText("Descending"); descendingRadioButton2.setBorder(javax.swing.BorderFactory.createEmptyBorder(0, 0, 0, 0)); descendingRadioButton2.setMargin(new java.awt.Insets(0, 0, 0, 0)); getContentPane().add(descendingRadioButton2, new org.netbeans.lib.awtextra.AbsoluteConstraints(250, 140, -1, -1)); sortOrderButtonGroup2.add(acsendingRadioButton2); acsendingRadioButton2.setSelected(true); acsendingRadioButton2.setText("Ascending"); acsendingRadioButton2.setBorder(javax.swing.BorderFactory.createEmptyBorder(0, 0, 0, 0)); acsendingRadioButton2.setMargin(new java.awt.Insets(0, 0, 0, 0)); getContentPane().add(acsendingRadioButton2, new org.netbeans.lib.awtextra.AbsoluteConstraints(250, 120, -1, -1)); sortOrderButtonGroup3.add(descendingRadioButton3); descendingRadioButton3.setText("Descending"); descendingRadioButton3.setBorder(javax.swing.BorderFactory.createEmptyBorder(0, 0, 0, 0)); descendingRadioButton3.setMargin(new java.awt.Insets(0, 0, 0, 0)); getContentPane().add(descendingRadioButton3, new org.netbeans.lib.awtextra.AbsoluteConstraints(250, 200, -1, -1)); sortOrderButtonGroup3.add(acsendingRadioButton3); acsendingRadioButton3.setSelected(true); acsendingRadioButton3.setText("Ascending"); acsendingRadioButton3.setBorder(javax.swing.BorderFactory.createEmptyBorder(0, 0, 0, 0)); acsendingRadioButton3.setMargin(new java.awt.Insets(0, 0, 0, 0)); getContentPane().add(acsendingRadioButton3, new org.netbeans.lib.awtextra.AbsoluteConstraints(250, 180, -1, -1)); pack(); }// </editor-fold>//GEN-END:initComponents /** * @param args the command line arguments */ public static void main(String args[]) { java.awt.EventQueue.invokeLater(new Runnable() { public void run() { new SortDialog(new javax.swing.JFrame(), true, null).setVisible(true); } }); } // Variables declaration - do not modify//GEN-BEGIN:variables private javax.swing.JRadioButton acsendingRadioButton1; private javax.swing.JRadioButton acsendingRadioButton2; private javax.swing.JRadioButton acsendingRadioButton3; private javax.swing.JButton cancelButton; private javax.swing.JRadioButton descendingRadioButton1; private javax.swing.JRadioButton descendingRadioButton2; private javax.swing.JRadioButton descendingRadioButton3; private javax.swing.JSeparator jSeparator1; private javax.swing.JSeparator jSeparator2; private javax.swing.JSeparator jSeparator3; private javax.swing.JSeparator jSeparator4; private javax.swing.JButton okButton; private javax.swing.JComboBox sortByComboBox; private javax.swing.JLabel sortByLabel; private javax.swing.ButtonGroup sortOrderButtonGroup; private javax.swing.ButtonGroup sortOrderButtonGroup2; private javax.swing.ButtonGroup sortOrderButtonGroup3; private javax.swing.JComboBox thenBy1ComboBox; private javax.swing.JLabel thenBy1Label; private javax.swing.JComboBox thenBy2ComboBox; private javax.swing.JLabel thenBy2Label; // End of variables declaration//GEN-END:variables }