Skip to content

Commit

Permalink
Restore hosted genome selection behavior -- json is downloaded to "ge…
Browse files Browse the repository at this point in the history
…nomes" folder.
  • Loading branch information
jrobinso committed Sep 26, 2024
1 parent 6203b45 commit 40869ad
Show file tree
Hide file tree
Showing 3 changed files with 51 additions and 41 deletions.
2 changes: 1 addition & 1 deletion src/main/java/org/broad/igv/ui/IGVMenuBar.java
Original file line number Diff line number Diff line change
Expand Up @@ -431,7 +431,7 @@ private JMenu createGenomesMenu() {

JMenu menu = new JMenu("Genomes");

loadGenomeFromServerMenuItem = new JMenuItem("Select Hosted Genome...");
loadGenomeFromServerMenuItem = new JMenuItem("Download Hosted Genome...");
loadGenomeFromServerMenuItem.addActionListener(e -> GenomeComboBox.loadGenomeFromServer());
loadGenomeFromServerMenuItem.setToolTipText(LOAD_GENOME_SERVER_TOOLTIP);
menu.add(loadGenomeFromServerMenuItem);
Expand Down
46 changes: 25 additions & 21 deletions src/main/java/org/broad/igv/ui/commandbar/GenomeComboBox.java
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@
import java.io.File;
import java.io.IOException;
import java.util.*;
import java.util.List;

/**
* Created by jrobinso on 7/6/17.
Expand Down Expand Up @@ -102,16 +103,10 @@ private void loadGenomeListItem(final GenomeListItem genomeListItem) {
loadGenomeFromServer();
} else {

boolean success = false;
Exception error = null;
try {
success = GenomeManager.getInstance().loadGenomeById(genomeListItem.getId());
GenomeManager.getInstance().loadGenomeById(genomeListItem.getId());
} catch (Exception e) {
log.error(e);
error = e;
}

if (!success) {
int choice = JOptionPane.showConfirmDialog(
IGV.getInstance().getMainFrame(), "The genome [" + genomeListItem.getId() +
"] could not be read. Would you like to remove the selected entry?",
Expand All @@ -120,7 +115,7 @@ private void loadGenomeListItem(final GenomeListItem genomeListItem) {
if (choice == JOptionPane.OK_OPTION) {
GenomeListManager.getInstance().removeGenomeListItem(genomeListItem);
refreshGenomeListComboBox();
log.error("Error initializing genome", error);
log.error("Error initializing genome", e);
}
}
}
Expand Down Expand Up @@ -220,27 +215,36 @@ public static void loadGenomeFromServer() {
if (dialog.isCanceled()) {
IGVEventBus.getInstance().post(new GenomeResetEvent());
} else {
GenomeListItem selectedValue = dialog.getSelectedValue();
if (selectedValue != null) {

List<GenomeListItem> selectedValueList = dialog.getSelectedValues();
GenomeListItem firstItem = null;
for (GenomeListItem selectedValue : selectedValueList) {
if (selectedValue != null) {
boolean downloadSequence = false;
boolean success = GenomeManager.getInstance().downloadGenome(selectedValue, downloadSequence);
if (success) {
GenomeListManager.getInstance().addServerGenomeItem(selectedValue);
firstItem = selectedValue;
}
}
}
if (firstItem != null && selectedValueList.size() == 1) {
try {
GenomeManager.getInstance().loadGenome(selectedValue.getPath());

GenomeListManager.getInstance().addServerGenomeItem(selectedValue);

GenomeListManager.getInstance().removeUserDefinedGenome(selectedValue.getId());
GenomeManager.getInstance().loadGenome(firstItem.getPath());
// If the user has previously defined this genome, remove it.
GenomeListManager.getInstance().removeUserDefinedGenome(firstItem.getId());

// If this is a .json genome, attempt to remove existing .genome files
if (selectedValue.getPath().endsWith(".json")) {
removeDotGenomeFile(selectedValue.getId());
if (firstItem.getPath().endsWith(".json")) {
removeDotGenomeFile(firstItem.getId());
}


} catch (IOException e) {
GenomeListManager.getInstance().removeGenomeListItem(selectedValue);
MessageUtils.showErrorMessage("Error loading genome " + selectedValue.getDisplayableName(), e);
log.error("Error loading genome " + selectedValue.getDisplayableName(), e);
GenomeListManager.getInstance().removeGenomeListItem(firstItem);
MessageUtils.showErrorMessage("Error loading genome " + firstItem.getDisplayableName(), e);
log.error("Error loading genome " + firstItem.getDisplayableName(), e);
}

}
}
};
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,7 @@ public class GenomeSelectionDialog extends org.broad.igv.ui.IGVDialog {

private JPanel dialogPane;
private JPanel contentPanel;
private JTextArea textArea1;
private JPanel filterPanel;
private JLabel label1;
private JTextField genomeFilter;
Expand All @@ -61,7 +62,7 @@ public class GenomeSelectionDialog extends org.broad.igv.ui.IGVDialog {
private JButton cancelButton;
private boolean isCanceled = true;

private GenomeListItem selectedValue = null;
private List<GenomeListItem> selectedValues = null;
private List<GenomeListItem> allListItems;
private DefaultListModel genomeListModel;

Expand Down Expand Up @@ -105,7 +106,11 @@ private void rebuildGenomeList(String filterText) {
* @param e
*/
private void genomeListMouseClicked(MouseEvent e) {
if (e.getClickCount() == 2) {
switch (e.getClickCount()) {
case 1:
List<GenomeListItem> selValues = genomeList.getSelectedValuesList();
break;
case 2:
okButtonActionPerformed(null);
}
}
Expand All @@ -114,8 +119,8 @@ private void genomeEntryKeyReleased(KeyEvent e) {
rebuildGenomeList(genomeFilter.getText());
}

public GenomeListItem getSelectedValue() {
return selectedValue;
public List<GenomeListItem> getSelectedValues() {
return selectedValues;
}

public boolean isCanceled() {
Expand All @@ -124,14 +129,14 @@ public boolean isCanceled() {

private void cancelButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_cancelButtonActionPerformed
isCanceled = true;
selectedValue = null;
selectedValues = null;
setVisible(false);
dispose();
}

private void okButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_okButtonActionPerformed
isCanceled = false;
selectedValue = genomeList.getSelectedValue();
selectedValues = genomeList.getSelectedValuesList();
setVisible(false);
dispose();
}
Expand All @@ -140,6 +145,7 @@ private void okButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRS
private void initComponents() {
dialogPane = new JPanel();
contentPanel = new JPanel();
textArea1 = new JTextArea();
filterPanel = new JPanel();
label1 = new JLabel();
genomeFilter = new JTextField();
Expand All @@ -165,6 +171,16 @@ private void initComponents() {
{
contentPanel.setLayout(new BoxLayout(contentPanel, BoxLayout.Y_AXIS));

//---- textArea1 ----
textArea1.setText("Selected genomes will be downloaded and added to the genome dropdown list.");
textArea1.setLineWrap(true);
textArea1.setWrapStyleWord(true);
textArea1.setBackground(UIManager.getColor("Button.background"));
textArea1.setRows(2);
textArea1.setMaximumSize(new Dimension(2147483647, 60));
textArea1.setRequestFocusEnabled(false);
textArea1.setEditable(false);
contentPanel.add(textArea1);

//======== filterPanel ========
{
Expand Down Expand Up @@ -204,7 +220,7 @@ public void keyReleased(KeyEvent e) {
{

//---- genomeList ----
genomeList.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
//genomeList.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
genomeList.addMouseListener(new IGVMouseInputAdapter() {
@Override
public void igvMouseClicked(MouseEvent e) {
Expand All @@ -227,24 +243,14 @@ public void igvMouseClicked(MouseEvent e) {

//---- okButton ----
okButton.setText("OK");
okButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
okButtonActionPerformed(e);
}
});
okButton.addActionListener(e -> okButtonActionPerformed(e));
buttonBar.add(okButton, new GridBagConstraints(1, 0, 1, 1, 0.0, 0.0,
GridBagConstraints.CENTER, GridBagConstraints.BOTH,
new Insets(0, 0, 5, 5), 0, 0));

//---- cancelButton ----
cancelButton.setText("Cancel");
cancelButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
cancelButtonActionPerformed(e);
}
});
cancelButton.addActionListener(e -> cancelButtonActionPerformed(e));
buttonBar.add(cancelButton, new GridBagConstraints(2, 0, 1, 1, 0.0, 0.0,
GridBagConstraints.CENTER, GridBagConstraints.BOTH,
new Insets(0, 0, 5, 0), 0, 0));
Expand Down

0 comments on commit 40869ad

Please sign in to comment.