JAL-2909 Wire up coordinates dialog with bam file reader
[jalview.git] / src / jalview / gui / BamFileOptionsChooser.java
index 7f9583f..f456319 100644 (file)
  */
 package jalview.gui;
 
+import jalview.io.AlignmentFileReaderI;
+import jalview.io.BamFile;
+import jalview.util.MessageManager;
+
+import java.awt.GridBagConstraints;
+import java.awt.GridBagLayout;
+import java.util.Arrays;
+
+import javax.swing.BorderFactory;
+import javax.swing.JComboBox;
+import javax.swing.JLabel;
 import javax.swing.JPanel;
+import javax.swing.JTextField;
 
 /**
  * A dialog where a user can choose import options for a bam file
@@ -28,4 +40,86 @@ import javax.swing.JPanel;
 public class BamFileOptionsChooser extends JPanel
 {
 
+  // text field for start of range
+  // JFormattedTextField startRange = new JFormattedTextField(
+  // new NumberFormatter(NumberFormat.getIntegerInstance()));
+
+  // text field for end of range
+  // JFormattedTextField endRange = new JFormattedTextField(
+  // new NumberFormatter(NumberFormat.getIntegerInstance()));
+
+  JTextField startRange = new JTextField(10);
+
+  JTextField endRange = new JTextField(10);
+
+  // combo box for chromosome list
+  JComboBox<String> chroCombo;
+
+  public BamFileOptionsChooser(AlignmentFileReaderI source)
+  {
+    Object[] preprocessResult = source.preprocess();
+    String[] chromosomes = Arrays.copyOf(preprocessResult,
+            preprocessResult.length, String[].class);
+
+    setLayout(new GridBagLayout());
+    GridBagConstraints c = new GridBagConstraints();
+
+    setBorder(BorderFactory.createEmptyBorder(0, 10, 10, 10));
+
+    // set up chromosome input
+    JLabel chroLabel = new JLabel(
+            MessageManager.getString("label.bam_chromosome"));
+    chroCombo = new JComboBox<>(chromosomes);
+    
+    // set up region input
+    JPanel range = new JPanel();
+    JLabel rangeLabel = new JLabel(
+            MessageManager.getString("label.bam_range"));
+    startRange.setColumns(8);
+    endRange.setColumns(8);
+
+    JLabel rangeSep = new JLabel("-");
+    range.add(startRange);
+    range.add(rangeSep);
+    range.add(endRange);
+
+    // chromosome label top left
+    c.gridx = 0;
+    c.gridy = 0;
+    c.anchor = GridBagConstraints.WEST;
+    c.fill = GridBagConstraints.NONE;
+    this.add(chroLabel, c);
+
+    // chromosome combo top right
+    c.gridx = 1;
+    c.weightx = 1;
+    c.anchor = GridBagConstraints.WEST;
+    c.fill = GridBagConstraints.HORIZONTAL;
+    this.add(chroCombo, c);
+
+    // region label mid left
+    c.gridx = 0;
+    c.gridy = 1;
+    c.anchor = GridBagConstraints.WEST;
+    c.fill = GridBagConstraints.NONE;
+    this.add(rangeLabel, c);
+
+    // region input mid right
+    c.gridx = 1;
+    c.weightx = 1;
+    c.anchor = GridBagConstraints.WEST;
+    c.fill = GridBagConstraints.HORIZONTAL;
+    this.add(range, c);
+  }
+
+  public void update(AlignmentFileReaderI source)
+  {
+
+    int start = Integer.parseInt(startRange.getText());
+    int end = Integer.parseInt(endRange.getText());
+    ((BamFile) source).setOptions((String) chroCombo.getSelectedItem(),
+            start, end);
+
+  }
+
 }