/*
* 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
}