List of usage examples for javax.swing JDialog JDialog
public JDialog()
From source file:interfaces.InterfazPrincipal.java
private void botonGenerarReporteClienteActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_botonGenerarReporteClienteActionPerformed // TODO add your handling code here: try {// www .j ava 2s . co m if (clienteReporteClienteFechaFinal.getSelectedDate().getTime() .compareTo(clienteReporteClienteFechaInicial.getSelectedDate().getTime()) < 0) { JOptionPane.showMessageDialog(this, "La fecha final debe ser posterior al dia de inicio"); } else { final ArrayList<Integer> listaIDFlujos = new ArrayList<>(); final JDialog dialogoEditar = new JDialog(); dialogoEditar.setTitle("Reporte cliente"); dialogoEditar.setSize(350, 610); dialogoEditar.setResizable(false); JPanel panelDialogo = new JPanel(); panelDialogo.setLayout(new GridBagLayout()); GridBagConstraints c = new GridBagConstraints(); //c.fill = GridBagConstraints.HORIZONTAL; JLabel ediitarTextoPrincipalDialogo = new JLabel("Informe cliente"); c.gridx = 0; c.gridy = 0; c.gridwidth = 1; c.insets = new Insets(10, 45, 10, 10); Font textoGrande = new Font("Arial", 1, 18); ediitarTextoPrincipalDialogo.setFont(textoGrande); panelDialogo.add(ediitarTextoPrincipalDialogo, c); final JTable tablaDialogo = new JTable(); DefaultTableModel modeloTabla = new DefaultTableModel() { @Override public boolean isCellEditable(int row, int column) { //all cells false return false; } }; ; modeloTabla.addColumn("Factura"); modeloTabla.addColumn("Tipo Flujo"); modeloTabla.addColumn("Fecha"); modeloTabla.addColumn("Valor"); //Llenar tabla ControladorFlujoFactura controladorFlujoFactura = new ControladorFlujoFactura(); ArrayList<String[]> flujosCliente = controladorFlujoFactura.getTodosFlujo_Factura( " where factura_id in (select factura_id from Factura where cliente_id = " + String.valueOf(jTextFieldIdentificacionClienteReporte.getText()) + ") order by factura_id"); // {"flujo_id","factura_id","tipo_flujo","fecha","valor"}; ArrayList<Calendar> fechasFlujos = new ArrayList<>(); for (int i = 0; i < flujosCliente.size(); i++) { String fila[] = new String[4]; String[] objeto = flujosCliente.get(i); fila[0] = objeto[1]; fila[1] = objeto[2]; fila[2] = objeto[3]; fila[3] = objeto[4]; //Filtrar, mirar las fechas String[] partirEspacios = objeto[3].split("\\s"); //El primer string es la fecha sin hora //Ahora esparamos por - String[] tomarAgeMesDia = partirEspacios[0].split("-"); //Realizar filtro int ageConsulta = Integer.parseInt(tomarAgeMesDia[0]); int mesConsulta = Integer.parseInt(tomarAgeMesDia[1]); int diaConsulta = Integer.parseInt(tomarAgeMesDia[2]); //Obtenemos dias, mes y ao de la consulta //Inicial int anioInicial = clienteReporteClienteFechaFinal.getSelectedDate().get(Calendar.YEAR); int mesInicial = clienteReporteClienteFechaFinal.getSelectedDate().get(Calendar.MONTH) + 1; int diaInicial = clienteReporteClienteFechaFinal.getSelectedDate().get(Calendar.DAY_OF_MONTH); //Final int anioFinal = clienteReporteClienteFechaInicial.getSelectedDate().get(Calendar.YEAR); int mesFinal = clienteReporteClienteFechaInicial.getSelectedDate().get(Calendar.MONTH) + 1; int diaFinal = clienteReporteClienteFechaInicial.getSelectedDate().get(Calendar.DAY_OF_MONTH); //Construir fechas Calendar fechaDeLaBD = new GregorianCalendar(ageConsulta, mesConsulta, diaConsulta); //Set year, month, day) Calendar fechaInicialRango = new GregorianCalendar(anioInicial, mesInicial, diaInicial); Calendar fechaFinalRango = new GregorianCalendar(anioFinal, mesFinal, diaFinal); if (fechaDeLaBD.compareTo(fechaInicialRango) <= 0 && fechaDeLaBD.compareTo(fechaFinalRango) >= 0) { fechasFlujos.add(fechaDeLaBD); modeloTabla.addRow(fila); } } if (modeloTabla.getRowCount() > 0) { tablaDialogo.setModel(modeloTabla); tablaDialogo.getColumn("Factura").setMinWidth(80); tablaDialogo.getColumn("Tipo Flujo").setMinWidth(80); tablaDialogo.getColumn("Fecha").setMinWidth(90); tablaDialogo.getColumn("Valor").setMinWidth(80); tablaDialogo.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); JScrollPane scroll = new JScrollPane(tablaDialogo); scroll.setPreferredSize(new Dimension(330, 150)); c.gridx = 0; c.gridy = 1; c.gridwidth = 1; c.insets = new Insets(0, 0, 0, 0); panelDialogo.add(scroll, c); TimeSeries localTimeSeries = new TimeSeries("Compras del cliente en el periodo"); Map listaAbonos = new HashMap(); for (int i = 0; i < modeloTabla.getRowCount(); i++) { listaIDFlujos.add(Integer.parseInt(flujosCliente.get(i)[0])); if (modeloTabla.getValueAt(i, 1).equals("abono")) { Calendar fechaFlujo = fechasFlujos.get(i); double valor = Double.parseDouble(String.valueOf(modeloTabla.getValueAt(i, 3))); int anoDato = fechaFlujo.get(Calendar.YEAR); int mesDato = fechaFlujo.get(Calendar.MONTH) + 1; int diaDato = fechaFlujo.get(Calendar.DAY_OF_MONTH); Day FechaDato = new Day(diaDato, mesDato, anoDato); if (listaAbonos.get(FechaDato) != null) { double valorAbono = (double) listaAbonos.get(FechaDato); listaAbonos.remove(FechaDato); listaAbonos.put(FechaDato, valorAbono + valor); } else { listaAbonos.put(FechaDato, valor); } } } Double maximo = 0.0; Iterator iterator = listaAbonos.keySet().iterator(); while (iterator.hasNext()) { Day key = (Day) iterator.next(); Double value = (double) listaAbonos.get(key); maximo = Math.max(maximo, value); localTimeSeries.add(key, value); } //localTimeSeries.add(); TimeSeriesCollection datos = new TimeSeriesCollection(localTimeSeries); JFreeChart chart = ChartFactory.createTimeSeriesChart("Compras del cliente en el periodo", // Title "Tiempo", // x-axis Label "Total ($)", // y-axis Label datos, // Dataset true, // Show Legend true, // Use tooltips false // Configure chart to generate URLs? ); /*Altering the graph */ XYPlot plot = (XYPlot) chart.getPlot(); plot.setAxisOffset(new RectangleInsets(5.0, 10.0, 10.0, 5.0)); plot.setDomainCrosshairVisible(true); plot.setRangeCrosshairVisible(true); XYLineAndShapeRenderer renderer = (XYLineAndShapeRenderer) plot.getRenderer(); renderer.setBaseShapesVisible(true); renderer.setBaseShapesFilled(true); NumberAxis numberAxis = (NumberAxis) plot.getRangeAxis(); numberAxis.setRange(new Range(0, maximo * 1.2)); Font font = new Font("Dialog", Font.PLAIN, 9); numberAxis.setTickLabelFont(font); numberAxis.setLabelFont(font); DateAxis axis = (DateAxis) plot.getDomainAxis(); axis.setDateFormatOverride(new SimpleDateFormat("dd-MM-yyyy")); axis.setAutoTickUnitSelection(false); axis.setVerticalTickLabels(true); axis.setTickLabelFont(font); axis.setLabelFont(font); LegendTitle leyendaChart = chart.getLegend(); leyendaChart.setItemFont(font); Font fontTitulo = new Font("Dialog", Font.BOLD, 12); TextTitle tituloChart = chart.getTitle(); tituloChart.setFont(fontTitulo); ChartPanel CP = new ChartPanel(chart); Dimension D = new Dimension(330, 300); CP.setPreferredSize(D); CP.setVisible(true); c.gridx = 0; c.gridy = 2; c.gridwidth = 1; c.insets = new Insets(10, 0, 0, 0); panelDialogo.add(CP, c); c.gridx = 0; c.gridy = 3; c.gridwidth = 1; c.anchor = GridBagConstraints.WEST; c.insets = new Insets(10, 30, 0, 0); JButton botonCerrar = new JButton("Cerrar"); botonCerrar.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { dialogoEditar.dispose(); } }); panelDialogo.add(botonCerrar, c); JButton botonGenerarPDF = new JButton("Guardar archivo"); botonGenerarPDF.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { ReporteFlujosCliente reporteFlujosCliente = new ReporteFlujosCliente(); reporteFlujosCliente.guardarDocumentoDialogo(dialogoEditar, listaIDFlujos, Integer.parseInt(jTextFieldIdentificacionClienteReporte.getText()), clienteReporteClienteFechaInicial.getSelectedDate(), clienteReporteClienteFechaFinal.getSelectedDate()); } }); c.insets = new Insets(10, 100, 0, 0); panelDialogo.add(botonGenerarPDF, c); JButton botonImprimir = new JButton("Imprimir"); botonImprimir.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { ReporteFlujosCliente reporteFlujosCliente = new ReporteFlujosCliente(); reporteFlujosCliente.imprimirFlujo(listaIDFlujos, Integer.parseInt(jTextFieldIdentificacionClienteReporte.getText()), clienteReporteClienteFechaInicial.getSelectedDate(), clienteReporteClienteFechaFinal.getSelectedDate()); } }); c.insets = new Insets(10, 230, 0, 0); panelDialogo.add(botonImprimir, c); dialogoEditar.add(panelDialogo); dialogoEditar.setVisible(true); } else { JOptionPane.showMessageDialog(this, "El cliente no registra movimientos en el rango de fechas seleccionado"); } } } catch (Exception e) { JOptionPane.showMessageDialog(this, "Debe seleccionar un da inicial y final de fechas"); } }
From source file:org.exist.launcher.Launcher.java
private boolean initSystemTray() { final Dimension iconDim = tray.getTrayIconSize(); BufferedImage image = null;// ww w. j ava2 s.c o m try { image = ImageIO.read(getClass().getResource("icon32.png")); } catch (final IOException e) { showMessageAndExit("Launcher failed", "Failed to read system tray icon.", false); } trayIcon = new TrayIcon(image.getScaledInstance(iconDim.width, iconDim.height, Image.SCALE_SMOOTH), "eXist-db Launcher"); final JDialog hiddenFrame = new JDialog(); hiddenFrame.setUndecorated(true); hiddenFrame.setIconImage(image); final PopupMenu popup = createMenu(); trayIcon.setPopupMenu(popup); trayIcon.addActionListener(actionEvent -> { trayIcon.displayMessage(null, "Right click for menu", TrayIcon.MessageType.INFO); setServiceState(); }); // add listener for left click on system tray icon. doesn't work well on linux though. if (!SystemUtils.IS_OS_LINUX) { trayIcon.addMouseListener(new MouseAdapter() { @Override public void mouseClicked(MouseEvent mouseEvent) { if (mouseEvent.getButton() == MouseEvent.BUTTON1) { setServiceState(); hiddenFrame.add(popup); popup.show(hiddenFrame, mouseEvent.getXOnScreen(), mouseEvent.getYOnScreen()); } } }); } try { hiddenFrame.setResizable(false); hiddenFrame.pack(); hiddenFrame.setVisible(true); tray.add(trayIcon); } catch (final AWTException e) { return false; } return true; }
From source file:org.geworkbench.components.lincs.LincsInterface.java
private void viewLicense_actionPerformed(String FileName) { getLicenseFromFile(FileName);//from w ww.j a v a 2 s . c om JDialog licenseDialog = new JDialog(); final JEditorPane jEditorPane = new JEditorPane("text/html", ""); jEditorPane.getDocument().putProperty("IgnoreCharsetDirective", Boolean.TRUE); jEditorPane.setText(licenseContent); if (jEditorPane.getCaretPosition() > 1) { jEditorPane.setCaretPosition(1); } JScrollPane scrollPane = new JScrollPane(jEditorPane); licenseDialog.setTitle("Lincs Interface License"); licenseDialog.setContentPane(scrollPane); licenseDialog.setSize(400, 300); licenseDialog.setLocationRelativeTo(this); licenseDialog.setVisible(true); }
From source file:org.geworkbench.engine.ccm.ComponentConfigurationManagerWindow.java
/** * Display a dialog box with a components license in it. * //from w ww .ja v a2 s .c o m * @param ActionEvent * @return void */ private void viewLicense_actionPerformed(ActionEvent e) { int[] selectedRow = table.getSelectedRows(); String license = "Select a component in order to view its license."; String componentName = null; if (selectedRow != null && selectedRow.length > 0 && selectedRow[0] >= 0) { int modelRow = table.convertRowIndexToModel(selectedRow[0]); license = (String) ccmTableModel.getModelValueAt(modelRow, CCMTableModel.LICENSE_INDEX); componentName = (String) ccmTableModel.getModelValueAt(modelRow, CCMTableModel.NAME_INDEX); } JDialog licenseDialog = new JDialog(); final JEditorPane jEditorPane = new JEditorPane("text/html", ""); jEditorPane.getDocument().putProperty("IgnoreCharsetDirective", Boolean.TRUE); jEditorPane.setText(license); if (jEditorPane.getCaretPosition() > 1) { jEditorPane.setCaretPosition(1); } JScrollPane scrollPane = new JScrollPane(jEditorPane); licenseDialog.setTitle(componentName + " License"); licenseDialog.setContentPane(scrollPane); licenseDialog.setSize(400, 300); licenseDialog.setLocationRelativeTo(frame); licenseDialog.setVisible(true); }
From source file:org.geworkbench.engine.ccm.ComponentConfigurationManagerWindow2.java
/** * Display a dialog box with a components license in it. * //from w w w.jav a 2s. co m * @param ActionEvent * @return void */ private void viewLicense_actionPerformed(ActionEvent e) { int[] selectedRow = table.getSelectedRows(); String license = "Select a component in order to view its license."; String componentName = null; if (selectedRow != null && selectedRow.length > 0 && selectedRow[0] >= 0) { int modelRow = table.convertRowIndexToModel(selectedRow[0]); license = (String) ccmTableModel.getModelValueAt(modelRow, CCMTableModel2.LICENSE_INDEX); componentName = (String) ccmTableModel.getModelValueAt(modelRow, CCMTableModel2.NAME_INDEX); } JDialog licenseDialog = new JDialog(); final JEditorPane jEditorPane = new JEditorPane("text/html", ""); jEditorPane.getDocument().putProperty("IgnoreCharsetDirective", Boolean.TRUE); jEditorPane.setText(license); if (jEditorPane.getCaretPosition() > 1) { jEditorPane.setCaretPosition(1); } JScrollPane scrollPane = new JScrollPane(jEditorPane); licenseDialog.setTitle(componentName + " License"); licenseDialog.setContentPane(scrollPane); licenseDialog.setSize(400, 300); licenseDialog.setLocationRelativeTo(frame); licenseDialog.setVisible(true); }
From source file:org.simmi.GeneSetHead.java
License:asdf
public void init(final Stage primaryStage, final Container comp, final SplitPane splitpane, final TableView<Gene> genetable, final TableView<Function> upper, final TableView<GeneGroup> lower, final MenuBar menubar, final ToolBar toolbar, final ToolBar btoolbar) { geneset.user = System.getProperty("user.name"); JavaFasta.user = geneset.user;//from ww w. j a v a 2s. c o m this.splitpane = splitpane; this.primaryStage = primaryStage; table = lower; gtable = genetable; //SerifyApplet.user = user; /*try { UIManager.setLookAndFeel("com.sun.java.swing.plaf.nimbus.NimbusLookAndFeel"); } catch (ClassNotFoundException e) { e.printStackTrace(); } catch (InstantiationException e) { e.printStackTrace(); } catch (IllegalAccessException e) { e.printStackTrace(); } catch (UnsupportedLookAndFeelException e) { e.printStackTrace(); }*/ String userhome = System.getProperty("user.home"); boolean windows = false; try { InputStream isk = GeneSet.class.getClassLoader().getResourceAsStream("org/simmi/genesetkey"); //Path gkey = Paths.get( url.toURI() ); InputStream iskp = GeneSet.class.getClassLoader().getResourceAsStream("org/simmi/genesetkey.pub"); //Path gkeypub = Paths.get( url.toURI() ); Path gkeyssh = Paths.get(userhome); //Path gkeyssh = userpath.resolve(".ssh"); if (!Files.exists(gkeyssh)) Files.createDirectory(gkeyssh); Path gkeylocal = gkeyssh.resolve("org/simmi/genesetkey"); Path gkeylocalpub = gkeyssh.resolve("org/simmi/genesetkey.pub"); if (!Files.exists(gkeylocal) && isk != null) { Files.copy(isk, gkeylocal, StandardCopyOption.REPLACE_EXISTING); } if (!Files.exists(gkeylocalpub) && iskp != null) { Files.copy(iskp, gkeylocalpub); } Set<PosixFilePermission> poset = new HashSet<PosixFilePermission>(); poset.add(PosixFilePermission.OWNER_READ); poset.add(PosixFilePermission.OWNER_WRITE); if (Files.exists(gkeylocal)) Files.setPosixFilePermissions(gkeylocal, poset); if (Files.exists(gkeylocalpub)) Files.setPosixFilePermissions(gkeylocalpub, poset); } catch (IOException e1) { e1.printStackTrace(); } catch (UnsupportedOperationException e2) { windows = true; e2.printStackTrace(); } if (windows) { File f = new File(userhome + "\\genesetkey"); f.setExecutable(false, false); f.setWritable(false, false); f.setReadable(false, false); f.setWritable(true, true); f.setReadable(true, true); } this.comp = comp; selcomb = new ComboBox<>(); searchcolcomb = new ComboBox<>(); syncolorcomb = new ComboBox<>(); searchcolcomb.getItems().add("Name"); searchcolcomb.getItems().add("Symbol"); searchcolcomb.getSelectionModel().select(0); setColors(); JMenuBar jmenubar = new JMenuBar(); Menu file = new Menu("File"); MenuItem newitem = new MenuItem("New"); newitem.setOnAction(actionEvent -> newFile()); file.getItems().add(newitem); MenuItem openitem = new MenuItem("Open"); openitem.setOnAction(actionEvent -> { try { importStuff(); } catch (IOException e3) { e3.printStackTrace(); } catch (UnavailableServiceException e3) { e3.printStackTrace(); } }); file.getItems().add(openitem); file.getItems().add(new SeparatorMenuItem()); MenuItem importitem = new MenuItem("Import genomes"); importitem.setOnAction(actionEvent -> fetchGenomes()); file.getItems().add(importitem); MenuItem exportitem = new MenuItem("Export genomes"); exportitem.setOnAction(actionEvent -> exportGenomes(geneset.speccontigMap)); file.getItems().add(exportitem); file.getItems().add(new SeparatorMenuItem()); MenuItem exportproteinitem = new MenuItem("Export protein sequences"); exportproteinitem.setOnAction(actionEvent -> exportProteinSequences(geneset.genelist)); file.getItems().add(exportproteinitem); MenuItem exportgeneitem = new MenuItem("Export gene clusters"); exportgeneitem.setOnAction(actionEvent -> exportGeneClusters(geneset.allgenegroups)); file.getItems().add(exportgeneitem); file.getItems().add(new SeparatorMenuItem()); MenuItem quititem = new MenuItem("Quit"); quititem.setOnAction(actionEvent -> System.exit(0)); file.getItems().add(quititem); Menu edit = new Menu("Edit"); MenuItem clustergenes = new MenuItem("Cluster genes"); clustergenes.setOnAction(actionEvent -> { //fxpanel.setScene( null ); /*Platform.runLater(new Runnable() { @Override public void run() { Label label1 = new Label("Id:"); tb1 = new TextField("0.5"); Label label2 = new Label("Len:"); tb2 = new TextField("0.5"); VBox vbox = new VBox(); HBox hbox1 = new HBox(); hbox1.getChildren().addAll( label1, tb1 ); HBox hbox2 = new HBox(); hbox2.getChildren().addAll( label2, tb2 ); epar = new TextField(); vbox.getChildren().add( epar ); vbox.getChildren().addAll( hbox1, hbox2 ); if( fxs == null ) fxs = new Scene( vbox ); fxs.setRoot( vbox ); fxpanel.setScene( fxs ); } });*/ JPanel panel = new JPanel(); GridBagLayout grid = new GridBagLayout(); GridBagConstraints c = new GridBagConstraints(); panel.setLayout(grid); /*JLabel label1 = new JLabel("Id:"); JTextField tb1 = new JTextField("0.5"); JLabel label2 = new JLabel("Len:"); JTextField tb2 = new JTextField("0.5"); Dimension d = new Dimension( 300, 30 ); JTextField epar = new JTextField(); epar.setSize( d ); epar.setPreferredSize( d ); c.fill = GridBagConstraints.HORIZONTAL; c.gridwidth = 1; c.gridheight = 1; c.gridx = 0; c.gridy = 0; panel.add( label1, c ); c.gridx = 1; c.gridy = 0; panel.add( tb1, c ); c.gridx = 0; c.gridy = 1; panel.add( label2, c ); c.gridx = 1; c.gridy = 1; panel.add( tb2, c ); c.gridx = 0; c.gridy = 2; c.gridwidth = 2; panel.add( epar, c ); JOptionPane.showMessageDialog(comp, new Object[] {panel}, "Clustering parameters", JOptionPane.PLAIN_MESSAGE );*/ /*if( tb1 != null ) { float id = Float.parseFloat( tb1.getText() ); float len = Float.parseFloat( tb2.getText() ); String expar = epar.getText(); tb1 = null; tb2 = null; epar = null;*/ Set<String> species = getSelspec(null, geneset.getSpecies(), null); geneset.clusterGenes(species, false); //} }); MenuItem alignclusters = new MenuItem("Align clusters"); alignclusters.setOnAction(actionEvent -> { try { String OS = System.getProperty("os.name").toLowerCase(); Map<String, String> env = new HashMap<String, String>(); env.put("create", "true"); String uristr = "jar:" + geneset.zippath.toUri(); geneset.zipuri = URI.create(uristr); geneset.zipfilesystem = FileSystems.newFileSystem(geneset.zipuri, env); //s.makeBlastCluster(zipfilesystem.getPath("/"), p, 1); Path aldir = geneset.zipfilesystem.getPath("aligned"); final Path aligneddir = Files.exists(aldir) ? aldir : Files.createDirectory(aldir); Runnable run = new Runnable() { @Override public void run() { try { geneset.zipfilesystem.close(); } catch (IOException e) { e.printStackTrace(); } } }; NativeRun nrun = new NativeRun(run); //ExecutorService es = Executors.newFixedThreadPool( Runtime.getRuntime().availableProcessors() ); Object[] cont = new Object[3]; Collection<GeneGroup> ggset; ObservableList<GeneGroup> ogg = table.getSelectionModel().getSelectedItems(); ggset = new HashSet<GeneGroup>(); if (ogg.size() == 0) { for (GeneGroup gg : geneset.allgenegroups) { //GeneGroup gg = allgenegroups.get(table.convertRowIndexToModel(r)); //gg.getCommonTag() if (gg != null && gg.getCommonTag() == null && gg.size() > 1) ggset.add(gg); } } else { for (GeneGroup gg : ogg) { //GeneGroup gg = geneset.allgenegroups.get(table.convertRowIndexToModel(r)); //gg.getCommonTag() if (gg != null && gg.getCommonTag() == null && gg.size() > 1) ggset.add(gg); } } //int i = 0; List commandsList = new ArrayList(); for (GeneGroup gg : ggset) { String fasta = gg.getFasta(true); String[] cmds = new String[] { OS.indexOf("mac") >= 0 ? "/usr/local/bin/mafft" : "/usr/bin/mafft", "-" }; Object[] paths = new Object[] { fasta.getBytes(), aligneddir.resolve(gg.getCommonId() + ".aa"), null }; commandsList.add(paths); commandsList.add(Arrays.asList(cmds)); //if( i++ > 5000 ) break; } nrun.runProcessBuilder("Running mafft", commandsList, cont, true, run, false); } catch (IOException e1) { if (geneset.zipfilesystem != null) { try { geneset.zipfilesystem.close(); } catch (IOException e2) { e2.printStackTrace(); } } e1.printStackTrace(); } }); MenuItem sharenumaction = new MenuItem("Update share numbers"); sharenumaction.setOnAction(actionEvent -> SwingUtilities.invokeLater(() -> { Set<String> specs = getSelspec(GeneSetHead.this, geneset.specList, null); geneset.updateShareNum(specs); })); MenuItem importgeneclusteringaction = new MenuItem("Import gene clustering"); importgeneclusteringaction.setOnAction(actionEvent -> SwingUtilities.invokeLater(() -> { JPanel panel = new JPanel(); GridBagLayout grid = new GridBagLayout(); GridBagConstraints c = new GridBagConstraints(); panel.setLayout(grid); JLabel label1 = new JLabel("Id:"); JTextField tb11 = new JTextField("0.5"); JLabel label2 = new JLabel("Len:"); JTextField tb21 = new JTextField("0.5"); Dimension d = new Dimension(300, 30); JTextField epar1 = new JTextField(); epar1.setSize(d); epar1.setPreferredSize(d); c.fill = GridBagConstraints.HORIZONTAL; c.gridwidth = 1; c.gridheight = 1; c.gridx = 0; c.gridy = 0; panel.add(label1, c); c.gridx = 1; c.gridy = 0; panel.add(tb11, c); c.gridx = 0; c.gridy = 1; panel.add(label2, c); c.gridx = 1; c.gridy = 1; panel.add(tb21, c); c.gridx = 0; c.gridy = 2; c.gridwidth = 2; panel.add(epar1, c); JOptionPane.showMessageDialog(comp, new Object[] { panel }, "Clustering parameters", JOptionPane.PLAIN_MESSAGE); float id = Float.parseFloat(tb11.getText()); float len = Float.parseFloat(tb21.getText()); //JFileChooser fc = new JFileChooser(); //if( fc.showOpenDialog( GeneSetHead.this ) == JFileChooser.APPROVE_OPTION ) { Serifier s = new Serifier(); //s.mseq = aas; for (String gk : geneset.refmap.keySet()) { Gene g = geneset.refmap.get(gk); if (g.tegeval.getAlignedSequence() != null) System.err.println(g.tegeval.getAlignedSequence().getName()); s.mseq.put(gk, g.tegeval.getAlignedSequence()); } Map<String, String> idspec = new HashMap<String, String>(); for (String idstr : geneset.refmap.keySet()) { if (idstr.contains(" ")) { System.err.println("coooonnnnnni " + idstr); } Gene gene = geneset.refmap.get(idstr); idspec.put(idstr, gene.getSpecies()); } //Sequences seqs = new Sequences(user, name, type, path, nseq) try { Map<String, String> env = new HashMap<String, String>(); env.put("create", "true"); String uristr = "jar:" + geneset.zippath.toUri(); geneset.zipuri = URI.create(uristr); geneset.zipfilesystem = FileSystems.newFileSystem(geneset.zipuri, env); Path root = geneset.zipfilesystem.getPath("/"); Path p = geneset.zipfilesystem.getPath("cluster.blastout"); //root.resolve("culster.blastout"); List<Set<String>> cluster = geneset.uclusterlist == null ? new ArrayList<>() : new ArrayList<>(geneset.uclusterlist); s.makeBlastCluster(root, p, 1, id, len, idspec, cluster, geneset.refmap); System.err.println(cluster.get(0)); if (geneset.uclusterlist != null) System.err.println(geneset.uclusterlist.get(0)); geneset.zipfilesystem.close(); } catch (IOException e1) { if (geneset.zipfilesystem != null) { try { geneset.zipfilesystem.close(); } catch (IOException e2) { e2.printStackTrace(); } } e1.printStackTrace(); } })); MenuItem importgenesymbolaction = new MenuItem("Import gene symbols"); importgenesymbolaction.setOnAction(actionEvent -> SwingUtilities.invokeLater(() -> { JFileChooser fc = new JFileChooser(); if (fc.showOpenDialog(GeneSetHead.this) == JFileChooser.APPROVE_OPTION) { try { Map<String, String> env = new HashMap<>(); env.put("create", "true"); //Path path = zipfile.toPath(); String uristr = "jar:" + geneset.zippath.toUri(); geneset.zipuri = URI.create(uristr /*.replace("file://", "file:")*/ ); geneset.zipfilesystem = FileSystems.newFileSystem(geneset.zipuri, env); Path nf = geneset.zipfilesystem.getPath("/smap_short.txt"); BufferedWriter bw = Files.newBufferedWriter(nf, StandardOpenOption.CREATE); File f = fc.getSelectedFile(); InputStream is = new FileInputStream(f); if (f.getName().endsWith(".gz")) is = new GZIPInputStream(is); geneset.uni2symbol(new InputStreamReader(is), bw, geneset.unimap); bw.close(); //long bl = Files.copy( new ByteArrayInputStream( baos.toByteArray() ), nf, StandardCopyOption.REPLACE_EXISTING ); geneset.zipfilesystem.close(); } catch (IOException e1) { e1.printStackTrace(); } } })); MenuItem importcazyaction = new MenuItem("Import Cazy"); importcazyaction.setOnAction(actionEvent -> SwingUtilities.invokeLater(() -> { JFileChooser fc = new JFileChooser(); if (fc.showOpenDialog(GeneSetHead.this) == JFileChooser.APPROVE_OPTION) { try { BufferedReader rd = Files.newBufferedReader(fc.getSelectedFile().toPath()); geneset.loadcazymap(geneset.cazymap, rd); } catch (IOException e1) { e1.printStackTrace(); } } })); MenuItem gene2refseqaction = new MenuItem("Gene 2 refseq"); gene2refseqaction.setOnAction(actionEvent -> { try { TextField tf = new TextField(); tf.setText("ftp://ftp.ncbi.nlm.nih.gov/gene/DATA/gene2refseq.gz"); Dialog<Path> dialog = new Dialog(); dialog.getDialogPane().setContent(tf); dialog.getDialogPane().getButtonTypes().add(ButtonType.OK); dialog.getDialogPane().getButtonTypes().add(ButtonType.CANCEL); dialog.setResultConverter(param -> param.getButtonData().isCancelButton() ? null : Paths.get(URI.create(tf.getText()))); Optional<Path> opath = dialog.showAndWait(); if (opath.isPresent()) { Map<String, String> env = new HashMap<>(); env.put("create", "true"); //Path path = zipfile.toPath(); String uristr = "jar:" + geneset.zippath.toUri(); geneset.zipuri = URI.create(uristr /*.replace("file://", "file:")*/); geneset.zipfilesystem = FileSystems.newFileSystem(geneset.zipuri, env); Path path = opath.get(); InputStream is = path.toUri().toURL().openStream(); if (path.getFileName().toString().endsWith(".gz")) { is = new GZIPInputStream(is); } Path nf = geneset.zipfilesystem.getPath("/org/simmi/gene2refseq_short.txt"); BufferedWriter bw = Files.newBufferedWriter(nf, StandardOpenOption.CREATE, StandardOpenOption.TRUNCATE_EXISTING, StandardOpenOption.WRITE); geneset.idMapping(new InputStreamReader(is), bw, 5, 1, geneset.refmap, null, geneset.gimap); bw.close(); } } catch (Exception e) { e.printStackTrace(); } finally { try { geneset.zipfilesystem.close(); } catch (IOException e) { e.printStackTrace(); } } }); MenuItem functionmappingaction = new MenuItem("Function mapping"); functionmappingaction.setOnAction(actionEvent -> SwingUtilities.invokeLater(() -> { final JTextField tf = new JTextField(); JButton btn = new JButton("File"); JComponent comp2 = new JComponent() { }; comp2.setLayout(new BorderLayout()); comp2.add(tf); comp2.add(btn, BorderLayout.EAST); tf.setText("http://130.208.252.239/data/sp2go.txt.gz"); final File[] file2 = new File[1]; btn.addActionListener(e -> { JFileChooser fc = new JFileChooser(); if (fc.showOpenDialog(GeneSetHead.this) == JFileChooser.APPROVE_OPTION) { file2[0] = fc.getSelectedFile(); try { tf.setText(fc.getSelectedFile().toURI().toURL().toString()); } catch (MalformedURLException e1) { e1.printStackTrace(); } } }); try { Map<String, String> env = new HashMap<>(); env.put("create", "true"); //Path path = zipfile.toPath(); String uristr = "jar:" + geneset.zippath.toUri(); geneset.zipuri = URI.create(uristr /*.replace("file://", "file:")*/ ); geneset.zipfilesystem = FileSystems.newFileSystem(geneset.zipuri, env); Path nf = geneset.zipfilesystem.getPath("/org/simmi/sp2go_short.txt"); BufferedWriter bw = Files.newBufferedWriter(nf, StandardOpenOption.CREATE, StandardOpenOption.TRUNCATE_EXISTING, StandardOpenOption.WRITE); JOptionPane.showMessageDialog(GeneSetHead.this, comp2); final JDialog dialog = new JDialog(); dialog.setTitle("Function mapping"); dialog.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE); dialog.setSize(400, 300); comp2 = new JComponent() { }; comp2.setLayout(new BorderLayout()); final JTextArea ta = new JTextArea(); /*final InputStream fis; if( file[0] != null ) fis = new FileInputStream( file[0] ); else { JTextField host = new JTextField("localhost"); JOptionPane.showMessageDialog(null, host); String username = System.getProperty("user.name"); String hostname = host.getText(); List<String> commandsList = Arrays.asList( new String[] {"ssh",username+"@"+hostname,"cat",tf.getText()} ); ProcessBuilder pb = new ProcessBuilder( commandsList ); Process p = pb.start(); for( Object commands : commandsList ) { if( commands instanceof List ) { for( Object cmd : (List)commands ) { ta.append(cmd+" "); } ta.append("\n"); } else { ta.append(commands+" "); } } ta.append("\n"); fis = p.getInputStream(); }*/ final JProgressBar pbar = new JProgressBar(); final Thread t = new Thread() { public void run() { try { URL url = new URL(tf.getText()); InputStream fis = url.openStream(); BufferedReader br = new BufferedReader(new InputStreamReader(new GZIPInputStream(fis))); //if( unimap != null ) unimap.clear(); //unimap = idMapping(new InputStreamReader(is), bw, 2, 0, refmap, genmap, gimap); geneset.funcMappingUni(br, geneset.unimap, bw); fis.close(); bw.close(); try { geneset.zipfilesystem.close(); } catch (Exception e2) { e2.printStackTrace(); } ; pbar.setIndeterminate(false); pbar.setEnabled(false); } catch (IOException e) { e.printStackTrace(); } } }; ta.setEditable(false); final JScrollPane sp = new JScrollPane(ta); dialog.add(comp2); comp2.add(pbar, BorderLayout.NORTH); comp2.add(sp, BorderLayout.CENTER); pbar.setIndeterminate(true); t.start(); /*okokdialog.addWindowListener( new WindowListener() { @Override public void windowOpened(WindowEvent e) {} @Override public void windowIconified(WindowEvent e) {} @Override public void windowDeiconified(WindowEvent e) {} @Override public void windowDeactivated(WindowEvent e) {} @Override public void windowClosing(WindowEvent e) {} @Override public void windowClosed(WindowEvent e) { if( pbar.isEnabled() ) { pbar.setIndeterminate( false ); pbar.setEnabled( false ); } } @Override public void windowActivated(WindowEvent e) {} });*/ dialog.setVisible(true); //long bl = Files.copy( new ByteArrayInputStream( baos.toByteArray() ), nf, StandardCopyOption.REPLACE_EXISTING ); } catch (IOException e1) { e1.printStackTrace(); } })); MenuItem importidmappingaction = new MenuItem("Import idmapping"); importidmappingaction.setOnAction(actionEvent -> SwingUtilities.invokeLater(() -> { final JTextField tf = new JTextField(); JButton btn = new JButton("File"); JComponent comp2 = new JComponent() { }; comp2.setLayout(new BorderLayout()); comp2.add(tf); comp2.add(btn, BorderLayout.EAST); tf.setText( "ftp://ftp.uniprot.org/pub/databases/uniprot/current_release/knowledgebase/idmapping/idmapping.dat.gz"); final File[] file2 = new File[1]; btn.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { JFileChooser fc = new JFileChooser(); if (fc.showOpenDialog(GeneSetHead.this) == JFileChooser.APPROVE_OPTION) { file2[0] = fc.getSelectedFile(); try { tf.setText(fc.getSelectedFile().toURI().toURL().toString()); } catch (MalformedURLException e1) { e1.printStackTrace(); } } } }); JOptionPane.showMessageDialog(GeneSetHead.this, comp2); //Thread t = new Thread() { // public void run() { try { Map<String, String> env = new HashMap<String, String>(); env.put("create", "true"); //Path path = zipfile.toPath(); String uristr = "jar:" + geneset.zippath.toUri(); geneset.zipuri = URI.create(uristr /*.replace("file://", "file:")*/ ); geneset.zipfilesystem = FileSystems.newFileSystem(geneset.zipuri, env); Path nf = geneset.zipfilesystem.getPath("/org/simmi/idmapping_short.dat"); final BufferedWriter bw = Files.newBufferedWriter(nf, StandardOpenOption.CREATE, StandardOpenOption.WRITE, StandardOpenOption.TRUNCATE_EXISTING); final JDialog dialog = new JDialog(); dialog.setTitle("Id mapping"); dialog.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE); dialog.setSize(400, 300); comp2 = new JComponent() { }; comp2.setLayout(new BorderLayout()); final JTextArea ta = new JTextArea(); /*final InputStream fis; if( file[0] != null ) fis = new FileInputStream( file[0] ); else { /*Object[] cont = new Object[3]; Runnable run = new Runnable() { public void run() { try { bw.close(); geneset.zipfilesystem.close(); } catch (IOException e) { e.printStackTrace(); } } };* JTextField host = new JTextField("localhost"); JOptionPane.showMessageDialog(null, host); String username = System.getProperty("user.name"); String hostname = host.getText(); List<String> commandsList = Arrays.asList( new String[] {"ssh",username+"@"+hostname,"cat",tf.getText()} ); ProcessBuilder pb = new ProcessBuilder( commandsList ); Process p = pb.start(); for( Object commands : commandsList ) { if( commands instanceof List ) { for( Object cmd : (List)commands ) { ta.append(cmd+" "); } ta.append("\n"); } else { ta.append(commands+" "); } } ta.append("\n"); fis = p.getInputStream(); }*/ final JProgressBar pbar = new JProgressBar(); final Thread t = new Thread() { public void run() { try { URL url = new URL(tf.getText()); InputStream fis = url.openStream(); InputStream is = new GZIPInputStream(fis); if (geneset.unimap != null) geneset.unimap.clear(); geneset.unimap = geneset.idMapping(new InputStreamReader(is), bw, 2, 0, geneset.refmap, geneset.genmap, geneset.gimap); is.close(); fis.close(); bw.close(); try { geneset.zipfilesystem.close(); } catch (Exception ep) { ep.printStackTrace(); } ; pbar.setIndeterminate(false); pbar.setEnabled(false); } catch (IOException e) { e.printStackTrace(); } } }; ta.setEditable(false); final JScrollPane sp = new JScrollPane(ta); dialog.add(comp2); comp2.add(pbar, BorderLayout.NORTH); comp2.add(sp, BorderLayout.CENTER); pbar.setIndeterminate(true); t.start(); /*System.err.println( "about to run" ); for( Object commands : commandsList ) { if( commands instanceof List ) { for( Object c : (List)commands ) { System.err.print( c+" " ); } System.err.println(); } else { System.err.print( commands+" " ); } } System.err.println();*/ /*okokdialog.addWindowListener( new WindowListener() { @Override public void windowOpened(WindowEvent e) {} @Override public void windowIconified(WindowEvent e) {} @Override public void windowDeiconified(WindowEvent e) {} @Override public void windowDeactivated(WindowEvent e) {} @Override public void windowClosing(WindowEvent e) {} @Override public void windowClosed(WindowEvent e) { if( pbar.isEnabled() ) { /*String result = ta.getText().trim(); if( run != null ) { cont[0] = null; cont[1] = result; cont[2] = new Date( System.currentTimeMillis() ).toString(); run.run(); }* pbar.setIndeterminate( false ); pbar.setEnabled( false ); } } @Override public void windowActivated(WindowEvent e) {} });*/ dialog.setVisible(true); /*NativeRun nrun = new NativeRun(); nrun.runProcessBuilder("Idmapping", Arrays.asList( tf.getText().split(" ") ), run, cont, false); ProcessBuilder pb = new ProcessBuilder( tf.getText().split(" ") ); Process p = pb.start(); fis = p.getInputStream(); }*/ //long bl = Files.copy( new ByteArrayInputStream( baos.toByteArray() ), nf, StandardCopyOption.REPLACE_EXISTING ); } catch (IOException e1) { e1.printStackTrace(); try { geneset.zipfilesystem.close(); } catch (Exception e2) { e2.printStackTrace(); } ; } // } //}; //t.start(); //} })); MenuItem cogblastaction = new MenuItem("Cog blast"); cogblastaction.setOnAction(actionEvent -> SwingUtilities.invokeLater(() -> { Set<String> species = getSelspec(null, geneset.getSpecies(), null); if (species != null && species.size() > 0) Platform.runLater(() -> cogBlastDlg(species)); })); MenuItem unresolvedblastaction = new MenuItem("Unresolved blast"); unresolvedblastaction.setOnAction(actionEvent -> SwingUtilities.invokeLater(() -> { try { Set<String> species = getSelspec(null, geneset.getSpecies(), null); StringWriter sb = new StringWriter(); Path dbPath = Paths.get("/data/nr"); ObservableList<Gene> genes = gtable.getSelectionModel().getSelectedItems(); if (genes.size() > 0) { if (isGeneview()) { for (Gene g : gtable.getSelectionModel().getSelectedItems()) { //int i = table.convertRowIndexToModel(r); //Gene g = geneset.genelist.get(i); Sequence gs = g.tegeval.getProteinSequence(); gs.setName(g.id); gs.writeSequence(sb); } } else { for (GeneGroup gg : table.getSelectionModel().getSelectedItems()) { //int i = table.convertRowIndexToModel(r); //GeneGroup gg = geneset.allgenegroups.get(i); Gene g = null; for (Gene gene : gg.genes) { g = gene; break; } Sequence gs = g.tegeval.getProteinSequence(); gs.setName(g.id); gs.writeSequence(sb); } } } else { for (Gene g : geneset.genelist) { if (g.getTag() == null || g.getTag().equalsIgnoreCase("gene")) { if (species.contains(g.getSpecies())) { Sequence gs = g.tegeval.getProteinSequence(); gs.setName(g.id); gs.writeSequence(sb); /*sb.append(">" + g.id + "\n"); for (int i = 0; i < gs.length(); i += 70) { sb.append( gs.substring(i, Math.min( i + 70, gs.length() )) + "\n"); }*/ } } } } Map<String, String> env = new HashMap<>(); env.put("create", "true"); String uristr = "jar:" + geneset.zippath.toUri(); geneset.zipuri = URI.create(uristr /*.replace("file://", "file:")*/ ); geneset.zipfilesystem = FileSystems.newFileSystem(geneset.zipuri, env); Path resPath = geneset.zipfilesystem.getPath("/unresolved.blastout"); NativeRun nrun = new NativeRun(); SerifyApplet.blastpRun(nrun, sb.getBuffer(), dbPath, resPath, "-evalue 0.00001", null, true, geneset.zipfilesystem, geneset.user, primaryStage); } catch (IOException e1) { e1.printStackTrace(); } })); MenuItem importbiosystemsaction = new MenuItem("Import biosystems"); importbiosystemsaction.setOnAction(actionEvent -> { Dialog<Map<String, Set<String>>> dialog = new Dialog(); TextField gene = new TextField(); TextField biosys = new TextField(); gene.setText("ftp://ftp.ncbi.nlm.nih.gov/pub/biosystems/biosystems.20160519/biosystems_gene_all.gz"); biosys.setText("ftp://ftp.ncbi.nlm.nih.gov/pub/biosystems/biosystems.20160519/bsid2info.gz"); VBox duo = new VBox(); duo.getChildren().add(gene); duo.getChildren().add(biosys); dialog.getDialogPane().setContent(duo); dialog.getDialogPane().getButtonTypes().add(ButtonType.OK); dialog.getDialogPane().getButtonTypes().add(ButtonType.CANCEL); dialog.setResultConverter(param -> { if (!param.getButtonData().isCancelButton()) { Map<String, Set<String>> result = null; Set<String> geneidset = geneset.genelist.stream().map(g -> g.genid).collect(Collectors.toSet()); try { InputStream p = new URI(gene.getText()).toURL().openStream(); InputStream b = new URI(biosys.getText()).toURL().openStream(); if (gene.getText().endsWith(".gz")) p = new GZIPInputStream(p); if (biosys.getText().endsWith(".gz")) b = new GZIPInputStream(b); Map<String, List<String[]>> group = new BufferedReader(new InputStreamReader(p)).lines() .map(l -> l.split("\t")).filter(s -> geneidset.contains(s[1])) .collect(Collectors.groupingBy(s -> s[1])); Set<String> bsids = group.entrySet().stream().flatMap(e -> e.getValue().stream()) .map(s -> s[0]).collect(Collectors.toSet()); Map<String, String> bsid2name = new BufferedReader(new InputStreamReader(b)).lines() .map(s -> s.split("\t")).filter(s -> bsids.contains(s[0])) .collect(Collectors.toMap(s -> s[0], s -> s[2] + ":" + s[3])); result = group.entrySet().stream() .collect(Collectors.toMap(s -> s.getKey(), s -> s.getValue().stream() .map(sub -> bsid2name.get(sub[0])).collect(Collectors.toSet()))); } catch (IOException e) { e.printStackTrace(); } catch (URISyntaxException e) { e.printStackTrace(); } //Path p = Paths.get(gene.getText()); //Path b = Paths.get(biosys.getText()); return result; } return null; }); Optional<Map<String, Set<String>>> od = dialog.showAndWait(); if (od.isPresent()) { geneset.biosystemsmap = od.get(); Map<String, String> env = new HashMap<>(); env.put("create", "true"); String uristr = "jar:" + geneset.zippath.toUri(); geneset.zipuri = URI.create(uristr /*.replace("file://", "file:")*/ ); try { geneset.zipfilesystem = FileSystems.newFileSystem(geneset.zipuri, env); Path resPath = geneset.zipfilesystem.getPath("/biosystems.txt"); BufferedWriter bw = Files.newBufferedWriter(resPath, StandardOpenOption.TRUNCATE_EXISTING); geneset.biosystemsmap.entrySet().stream().forEach(e -> { try { bw.write(e.getKey() + "\t" + e.getValue().stream().collect(Collectors.joining(";")) + "\n"); } catch (IOException e1) { e1.printStackTrace(); } }); bw.close(); } catch (Exception e) { e.printStackTrace(); } finally { try { geneset.zipfilesystem.close(); } catch (IOException e) { e.printStackTrace(); } } } }); MenuItem importkeggpathwayaction = new MenuItem("Import kegg pathways"); importkeggpathwayaction.setOnAction(actionEvent -> { Set<String> keggids = new HashSet<>(); for (Gene g : geneset.genelist) { if (g.keggid != null) { int i = g.keggid.indexOf(':'); if (i > 0) { keggids.add(g.keggid.substring(0, i)); } } } System.err.println(keggids); JTextField tf = new JTextField("http://130.208.252.239/organisms/"); JOptionPane.showMessageDialog(null, tf); Map<String, String> env = new HashMap<>(); env.put("create", "true"); Path rootp = null; try { geneset.zipfilesystem = FileSystems.newFileSystem(geneset.zipuri, env); } catch (Exception ee) { ee.printStackTrace(); } for (Path root : geneset.zipfilesystem.getRootDirectories()) { rootp = root; break; } for (String kegg : keggids) { try { URL url = new URL(tf.getText() + kegg + ".tar.gz"); InputStream is = url.openStream(); GZIPInputStream gz = new GZIPInputStream(is); TarArchiveInputStream tar = new TarArchiveInputStream(gz); TarArchiveEntry tae = (TarArchiveEntry) tar.getNextEntry(); while (tae != null) { geneset.traverseTar(tar, tae, rootp); tae = (TarArchiveEntry) tar.getNextEntry(); } is.close(); } catch (IOException e1) { e1.printStackTrace(); } } try { geneset.zipfilesystem.close(); } catch (Exception ee) { ee.printStackTrace(); } ; }); edit.getItems().add(clustergenes); edit.getItems().add(alignclusters); edit.getItems().add(new SeparatorMenuItem()); edit.getItems().add(sharenumaction); edit.getItems().add(importgeneclusteringaction); edit.getItems().add(importgenesymbolaction); edit.getItems().add(importcazyaction); edit.getItems().add(functionmappingaction); edit.getItems().add(importidmappingaction); edit.getItems().add(gene2refseqaction); edit.getItems().add(importbiosystemsaction); edit.getItems().add(importkeggpathwayaction); edit.getItems().add(new SeparatorMenuItem()); edit.getItems().add(cogblastaction); edit.getItems().add(unresolvedblastaction); Menu view = new Menu("View"); gb = new RadioMenuItem("Genes"); gb.setOnAction(actionEvent -> { splitpane.getItems().remove(table); splitpane.getItems().add(0, gtable); //table.setModel( defaultModel ); }); view.getItems().add(gb); ggb = new RadioMenuItem("Gene groups"); ggb.setOnAction(actionEvent -> { splitpane.getItems().remove(gtable); splitpane.getItems().add(0, table); //table.setModel( groupModel ); }); ToggleGroup bg = new ToggleGroup(); gb.setToggleGroup(bg); ggb.setToggleGroup(bg); //ButtonGroup bg = new ButtonGroup(); //bg.add( gb ); //bg.add( ggb ); ggb.setSelected(true); view.getItems().add(ggb); ActionCollection.addAll(view, geneset.clusterMap, GeneSetHead.this, geneset.speccontigMap, table, comp, geneset.cs); Menu help = new Menu("Help"); MenuItem about = new MenuItem("About"); about.setOnAction(actionEvent -> SwingUtilities .invokeLater(() -> JOptionPane.showMessageDialog(comp, "CompGen 1.0"))); help.getItems().add(about); MenuItem test = new MenuItem("Test"); test.setOnAction(actionEvent -> { /*for( Gene g : geneset.genelist ) { Sequence seq = g.tegeval.getContig(); if( seq == null ) { System.err.println(); } }*/ for (String spec : geneset.speccontigMap.keySet()) { if (spec.contains("RAST")) { List<Sequence> lseq = geneset.speccontigMap.get(spec); for (Sequence seq : lseq) { for (Annotation a : seq.getAnnotations()) { System.err.println(a.getGene().getGeneGroup().species); /*Sequence tseq = a.getContig(); if( tseq == null ) { System.err.println(); }*/ } } } } /*for( GeneGroup gg : allgenegroups ) { if( gg.species.size() > 1 ) { System.err.println( gg.species ); } }*/ }); help.getItems().add(test); help.getItems().add(new SeparatorMenuItem()); MenuItem runserver = new MenuItem("Run server"); runserver.setOnAction(actionEvent -> { SwingUtilities.invokeLater(new Runnable() { public void run() { JSpinner spin = new JSpinner(); JOptionPane.showMessageDialog(GeneSetHead.this, spin, "Port", JOptionPane.QUESTION_MESSAGE); try { geneset.cs = WSServer.startServer(GeneSetHead.this, (Integer) spin.getValue()); } catch (UnknownHostException e1) { e1.printStackTrace(); } } }); }); help.getItems().add(runserver); help.getItems().add(new SeparatorMenuItem()); CheckMenuItem cbmi = new CheckMenuItem("Use geneset user"); help.getItems().add(cbmi); cbmi.setOnAction(actionEvent -> { if (cbmi.isSelected()) { geneset.user = "geneset"; } else geneset.user = System.getProperty("user.name"); JavaFasta.user = geneset.user; if (geneset.currentSerify != null) geneset.currentSerify.user = geneset.user; }); help.getItems().add(new SeparatorMenuItem()); MenuItem helptut = new MenuItem("Help & Tutorial"); helptut.setOnAction(actionEvent -> { try { Desktop.getDesktop().browse(new URI("http://thermusgenes.appspot.com/pancore.html")); } catch (IOException | URISyntaxException e1) { e1.printStackTrace(); } }); help.getItems().add(helptut); Menu sequencemenu = new Menu("Sequence"); MenuItem showgroupseq = new MenuItem("Show group sequences"); showgroupseq.setOnAction(actionEvent -> { //JTextArea textarea = new JTextArea(); //JScrollPane scrollpane = new JScrollPane(textarea); /*try { if (clipboardService == null) clipboardService = (ClipboardService) ServiceManager.lookup("javax.jnlp.ClipboardService"); Action action = new CopyAction("Copy", null, "Copy data", new Integer(KeyEvent.VK_CONTROL + KeyEvent.VK_C)); textarea.getActionMap().put("copy", action); grabFocus = true; } catch (Exception ee) { ee.printStackTrace(); System.err.println("Copy services not available. Copy using 'Ctrl-c'."); } textarea.setDragEnabled(true);*/ JFrame frame = null; if (geneset.currentSerify == null) { frame = new JFrame(); frame.setDefaultCloseOperation(JFrame.HIDE_ON_CLOSE); frame.setSize(400, 300); Map<String, String> env = new HashMap<String, String>(); //Path path = zipfile.toPath(); String uristr = "jar:" + geneset.zippath.toUri(); geneset.zipuri = URI.create(uristr /*.replace("file://", "file:")*/ ); try { geneset.zipfilesystem = FileSystems.newFileSystem(geneset.zipuri, env); } catch (IOException e1) { e1.printStackTrace(); } SerifyApplet sa = new SerifyApplet(geneset.zipfilesystem); sa.init(frame, null, geneset.user); //frame.add( ) geneset.currentSerify = sa; } /* else frame = (JFrame)currentSerify.cnt;*/ String[] farr = new String[] { "o.profundus", "mt.silvanus", "mt.ruber", "m.hydrothermalis", "t.thermophilus_SG0_5JP17_16", "t.thermophilusJL18", "t.thermophilusHB8", "t.thermophilusHB27", "t.scotoductusSA01", "t.scotoductus4063", "t.scotoductus1572", "t.scotoductus2101", "t.scotoductus2127", "t.scotoductus346", "t.scotoductus252", "t.antranikiani", "t.kawarayensis", "t.brockianus", "t.igniterrae", "t.eggertsoni", "t.RLM", "t.oshimai_JL2", "t.oshimai", "t.filiformis", "t.arciformis", "t.islandicus", "t.aquaticus", "t.spCCB" }; Map<Integer, String> ups = new HashMap<Integer, String>(); Set<Integer> stuck = new HashSet<Integer>(); Map<Integer, List<Tegeval>> ups2 = new HashMap<Integer, List<Tegeval>>(); //int[] rr = table.getSelectedRows(); for (Gene gg : gtable.getSelectionModel().getSelectedItems()) { //int cr = table.convertRowIndexToModel(r); //Gene gg = geneset.genelist.get(cr); if (gg.getSpecies() != null) { if (gg.genid != null && gg.genid.length() > 0) { ups.put(gg.getGroupIndex(), gg.name); stuck.add(gg.getGroupIndex()); } if (!stuck.contains(gg.getGroupIndex())) { if (!ups.containsKey(gg.getGroupIndex()) || !(gg.name.contains("unnamed") || gg.name.contains("hypot"))) ups.put(gg.getGroupIndex(), gg.name); } List<Tegeval> tlist; if (ups2.containsKey(gg.getGroupIndex())) tlist = ups2.get(gg.getGroupIndex()); else { tlist = new ArrayList<Tegeval>(); ups2.put(gg.getGroupIndex(), tlist); } //Set<String> specs = new HashSet<String>(); //textarea.append(gg.name + ":\n"); //for (String sp : gg.species.keySet()) { int count = 0; for (String sp : farr) { //Teginfo stv = gg.species.equals(sp) ? gg.teginfo : null; if (gg.getSpecies().equals(sp)) tlist.add(gg.tegeval); /*for( String key : gg.species.keySet() ) { if( key.contains("JL2") ) { System.err.println( " erm " + key ); } }*/ /*if( stv == null && gg.species.size() == 28 ) { System.err.println( gg.species ); System.err.println( sp ); }*/ //System.err.println( gg.species.keySet() ); /*if( stv == null ) { //System.err.println( sp ); } else { count++; //specs.add( sp ); for (Tegeval tv : stv.tset) { tlist.add( tv ); /*textarea.append(">" + tv.cont + " " + tv.teg + " " + tv.eval + "\n"); if (tv.dna != null) { for (int i = 0; i < tv.dna.length(); i += 70) { textarea.append(tv.dna.gg.speciessubstring(i, Math.min(i + 70, tv.dna.length())) + "\n"); } }* } }*/ } //if( count < gg.species.size() ) { // System.err.println( gg.species ); // System.err.println(); //} //if( specs.size() < 28 ) System.err.println("mu " + specs); } } try { StringWriter sb = new StringWriter(); for (int gi : ups.keySet()) { String name = ups.get(gi); List<Tegeval> tlist = ups2.get(gi); sb.append(name.replace('/', '-') + ":\n"); if (tlist.size() < 28) { for (Tegeval tv : tlist) { System.err.println(tv.name); } System.err.println(); } for (Tegeval tv : tlist) { Sequence ps = tv.getProteinSequence(); ps.setName(tv.name.substring(0, tv.name.indexOf('_'))); ps.writeSequence(sb); /*sb.append(">" + tv.name.substring(0, tv.name.indexOf('_')) + "\n"); for (int i = 0; i < ps.length(); i += 70) { sb.append( ps.substring(i, Math.min(i + 70, tv.getProteinLength() )) + "\n"); }*/ } } geneset.currentSerify.addSequences("uh", new StringReader(sb.toString()), Paths.get("/"), null); } catch (URISyntaxException | IOException e1) { e1.printStackTrace(); } frame.setVisible(true); }); sequencemenu.getItems().add(showgroupseq); MenuItem showgroupdnaseq = new MenuItem("Show group DNA sequences"); showgroupdnaseq.setOnAction(actionEvent -> { final JTextArea textarea = new JTextArea(); JScrollPane scrollpane = new JScrollPane(textarea); try { if (clipboardService == null) clipboardService = (ClipboardService) ServiceManager.lookup("javax.jnlp.ClipboardService"); Action action = new CopyAction("Copy", null, "Copy data", new Integer(KeyEvent.VK_CONTROL + KeyEvent.VK_C)); textarea.getActionMap().put("copy", action); grabFocus = true; } catch (Exception ee) { ee.printStackTrace(); System.err.println("Copy services not available. Copy using 'Ctrl-c'."); } textarea.setDragEnabled(true); try { final DataFlavor df = new DataFlavor("text/plain;charset=utf-8"); TransferHandler th = new TransferHandler() { /** * */ private static final long serialVersionUID = 1L; public int getSourceActions(JComponent c) { return TransferHandler.COPY_OR_MOVE; } public boolean canImport(TransferHandler.TransferSupport support) { return false; } protected Transferable createTransferable(JComponent c) { return new Transferable() { @Override public Object getTransferData(DataFlavor arg0) throws UnsupportedFlavorException, IOException { if (arg0.equals(df)) { return new ByteArrayInputStream(textarea.getText().getBytes()); } else { return textarea.getText(); } } @Override public DataFlavor[] getTransferDataFlavors() { return new DataFlavor[] { df, DataFlavor.stringFlavor }; } @Override public boolean isDataFlavorSupported(DataFlavor arg0) { if (arg0.equals(df) || arg0.equals(DataFlavor.stringFlavor)) { return true; } return false; } }; } public boolean importData(TransferHandler.TransferSupport support) { return false; } }; textarea.setTransferHandler(th); } catch (ClassNotFoundException e1) { e1.printStackTrace(); } Map<Integer, String> ups = new HashMap<Integer, String>(); Set<Integer> stuck = new HashSet<Integer>(); Map<Integer, List<Tegeval>> ups2 = new HashMap<Integer, List<Tegeval>>(); //int[] rr = table.getSelectedRows(); for (Gene gg : gtable.getSelectionModel().getSelectedItems()) { //int cr = table.convertRowIndexToModel(r); //Gene gg = geneset.genelist.get(cr); if (gg.getSpecies() != null) { if (gg.genid != null && gg.genid.length() > 0) { ups.put(gg.getGroupIndex(), gg.name); stuck.add(gg.getGroupIndex()); } if (!stuck.contains(gg.getGroupIndex())) { if (!ups.containsKey(gg.getGroupIndex()) || !(gg.name.contains("unnamed") || gg.name.contains("hypot"))) ups.put(gg.getGroupIndex(), gg.name); } List<Tegeval> tlist; if (ups2.containsKey(gg.getGroupIndex())) tlist = ups2.get(gg.getGroupIndex()); else { tlist = new ArrayList<Tegeval>(); ups2.put(gg.getGroupIndex(), tlist); } //textarea.append(gg.name + ":\n"); tlist.add(gg.tegeval); /*textarea.append(">" + tv.cont + " " + tv.teg + " " + tv.eval + "\n"); if (tv.dna != null) { for (int i = 0; i < tv.dna.length(); i += 70) { textarea.append(tv.dna.substring(i, Math.min(i + 70, tv.dna.length())) + "\n"); } }*/ } } for (int gi : ups.keySet()) { String name = ups.get(gi); List<Tegeval> tlist = ups2.get(gi); textarea.append(name.replace('/', '-') + ":\n"); for (Tegeval tv : tlist) { textarea.append(">" + tv.name.substring(0, tv.name.indexOf('_')) + "\n"); for (int i = 0; i < tv.getLength(); i += 70) { textarea.append(tv.getSubstring(i, Math.min(i + 70, tv.getLength())) + "\n"); } } } JFrame frame = new JFrame(); frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); frame.add(scrollpane); frame.setSize(400, 300); frame.setVisible(true); }); sequencemenu.getItems().add(showgroupdnaseq); sequencemenu.getItems().add(new SeparatorMenuItem()); MenuItem showallseq = new MenuItem("Show all sequences"); showallseq.setOnAction(actionEvent -> { JFrame frame = new JFrame(); frame.setSize(800, 600); frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); Serifier serifier = new Serifier(); JavaFasta jf = new JavaFasta((comp instanceof JApplet) ? (JApplet) comp : null, serifier, geneset.cs); jf.initGui(frame); Map<String, Sequence> contset = new HashMap<String, Sequence>(); //int[] rr = table.getSelectedRows(); for (Gene gg : gtable.getSelectionModel().getSelectedItems()) { //int cr = table.convertRowIndexToModel(r); //Gene gg = geneset.genelist.get(cr); Tegeval tv = gg.tegeval; String contig = tv.getContshort().getName(); Sequence seq = tv.getProteinSequence(); seq.setName(contig); serifier.mseq.put(seq.getName(), seq); //Sequence seq = new Sequence( contig, aa, serifier.mseq ); serifier.addSequence(seq); } jf.updateView(); frame.setVisible(true); }); sequencemenu.getItems().add(showallseq); MenuItem showseq = new MenuItem("Show sequences"); showseq.setOnAction(actionEvent -> { Set<GeneGroup> genegroups = new HashSet<GeneGroup>(); //int[] rr = table.getSelectedRows(); if (!isGeneview()) { for (GeneGroup gg : table.getSelectionModel().getSelectedItems()) { //int cr = table.convertRowIndexToModel(r); //GeneGroup gg = geneset.allgenegroups.get(cr); genegroups.add(gg); } } else { for (Gene gg : gtable.getSelectionModel().getSelectedItems()) { //int cr = table.convertRowIndexToModel(r); //Gene gg = geneset.genelist.get(cr); genegroups.add(gg.getGeneGroup()); } } Platform.runLater(() -> { Set<String> specs = null; if (table.getItems().size() > 1) specs = getSelspec(comp, geneset.specList, null); showSequences(comp, genegroups, false, specs); }); }); sequencemenu.getItems().add(showseq); MenuItem showseqwgenenames = new MenuItem("Show sequences w/genenames"); showseqwgenenames.setOnAction(actionEvent -> { Set<GeneGroup> genegroups = new HashSet<GeneGroup>(); //int[] rr = table.getSelectedRows(); if (!isGeneview()) { for (GeneGroup gg : table.getSelectionModel().getSelectedItems()) { //int cr = table.convertRowIndexToModel(r); //GeneGroup gg = geneset.allgenegroups.get(cr); genegroups.add(gg); } } else { for (Gene gg : gtable.getSelectionModel().getSelectedItems()) { //int cr = table.convertRowIndexToModel(r); //Gene gg = geneset.genelist.get(cr); genegroups.add(gg.getGeneGroup()); } } //Set<String> specs = null; //if( rr.length > 1 ) specs = getSelspec(comp, specList, null); showSequences(comp, genegroups, false, null, true); }); sequencemenu.getItems().add(showseqwgenenames); MenuItem showalignseq = new MenuItem("Show aligned sequences"); showalignseq.setOnAction(actionEvent -> { Set<GeneGroup> genegroups = new HashSet<GeneGroup>(); //int[] rr = table.getSelectedRows(); if (!isGeneview()) { for (GeneGroup gg : table.getSelectionModel().getSelectedItems()) { genegroups.add(gg); } } else { for (Gene gg : gtable.getSelectionModel().getSelectedItems()) { genegroups.add(gg.getGeneGroup()); } } Serifier serifier = new Serifier(); for (GeneGroup ggroup : genegroups) { for (Tegeval tv : ggroup.getTegevals()) { String selspec = tv.getContshort().getSpec();//tv.getContig(); String spec = geneset.nameFix(selspec); /*if( selspec.contains("hermus") ) spec = selspec; else { Matcher m = Pattern.compile("\\d").matcher(selspec); int firstDigitLocation = m.find() ? m.start() : 0; if( firstDigitLocation == 0 ) spec = "Thermus_" + selspec; else spec = "Thermus_" + selspec.substring(0,firstDigitLocation) + "_" + selspec.substring(firstDigitLocation); }*/ Sequence seq = tv.getAlignedSequence(); //System.err.println( "seqlen " + seq.length() ); if (seq != null) { seq.setName(spec); //Sequence seq = new Sequence( contig, seqstr, null ); serifier.addSequence(seq); } else { Sequence sb = tv.getProteinSequence(); sb.setName(spec); //Sequence sseq = new Sequence( spec, sb, serifier.mseq ); serifier.addSequence(sb); } } } showAlignedSequences(comp, serifier); }); sequencemenu.getItems().add(showalignseq); MenuItem splitseq = new MenuItem("Split/Show sequences"); splitseq.setOnAction(actionEvent -> { try { StringBuffer sb = getSelectedASeqs(table, geneset.genelist, GeneSetHead.this, geneset.specList); if (geneset.currentSerify == null) { JFrame frame = new JFrame(); frame.setDefaultCloseOperation(JFrame.HIDE_ON_CLOSE); frame.setSize(800, 600); SerifyApplet sa = new SerifyApplet(geneset.zipfilesystem); sa.init(frame, null, geneset.user); geneset.currentSerify = sa; frame.setVisible(true); } geneset.currentSerify.addSequences("uh", new StringReader(sb.toString()), Paths.get("/"), null); } catch (URISyntaxException | IOException e1) { e1.printStackTrace(); } //JTextArea textarea = new JTextArea(); //textarea.append( sb.toString() ); /*try { if (clipboardService == null) clipboardService = (ClipboardService) ServiceManager.lookup("javax.jnlp.ClipboardService"); Action action = new CopyAction("Copy", null, "Copy data", new Integer(KeyEvent.VK_CONTROL + KeyEvent.VK_C)); textarea.getActionMap().put("copy", action); grabFocus = true; } catch (Exception ee) { ee.printStackTrace(); System.err.println("Copy services not available. Copy using 'Ctrl-c'."); } * * final DataFlavor df = * DataFlavor.getTextPlainUnicodeFlavor();//new * DataFlavor("text/plain;charset=utf-8"); final String charset * = df.getParameter("charset"); final Transferable transferable * = new Transferable() { * * @Override public Object getTransferData(DataFlavor arg0) * throws UnsupportedFlavorException, IOException { String ret = * makeCopyString( detailTable ); return new * ByteArrayInputStream( ret.getBytes( charset ) ); } * * @Override public DataFlavor[] getTransferDataFlavors() { * return new DataFlavor[] { df }; } * * @Override public boolean isDataFlavorSupported(DataFlavor * arg0) { if( arg0.equals(df) ) { return true; } return false; * } }; * * TransferHandler th = new TransferHandler() { private static * final long serialVersionUID = 1L; * * public int getSourceActions(JComponent c) { return * TransferHandler.COPY_OR_MOVE; } * * public boolean canImport(TransferHandler.TransferSupport * support) { return false; } * * protected Transferable createTransferable(JComponent c) { * return transferable; } * * public boolean importData(TransferHandler.TransferSupport * support) { /*try { Object obj = * support.getTransferable().getTransferData( df ); InputStream * is = (InputStream)obj; * * byte[] bb = new byte[2048]; int r = is.read(bb); * * //importFromText( new String(bb,0,r) ); } catch * (UnsupportedFlavorException e) { e.printStackTrace(); } catch * (IOException e) { e.printStackTrace(); }* return false; } }; * textarea.setTransferHandler( th ); * textarea.setDragEnabled(true); JScrollPane scrollpane = new JScrollPane(textarea); JFrame frame = new JFrame(); frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); frame.add(scrollpane); frame.setSize(400, 300); frame.setVisible(true);*/ }); sequencemenu.getItems().add(splitseq); MenuItem showdnaseq = new MenuItem("Show DNA sequences"); showdnaseq.setOnAction(actionEvent -> { Set<GeneGroup> genegroups = new HashSet<GeneGroup>(); int rr = 0; if (!isGeneview()) { ObservableList<GeneGroup> lgg = table.getSelectionModel().getSelectedItems(); genegroups.addAll(lgg); rr = lgg.size(); } else { for (Gene gg : gtable.getSelectionModel().getSelectedItems()) { genegroups.add(gg.getGeneGroup()); rr++; } } Set<String> specs = null; if (rr > 1) specs = getSelspec(comp, geneset.specList, null); showSequences(comp, genegroups, true, specs); /*StringBuilder sb = getSelectedSeqs( table, genelist ); if( currentSerify == null ) { JFrame frame = new JFrame(); frame.setDefaultCloseOperation( JFrame.DO_NOTHING_ON_CLOSE ); frame.setSize(800, 600); SerifyApplet sa = new SerifyApplet(); sa.init( frame ); try { sa.addSequences("uh", new StringReader( sb.toString() ), "/"); } catch (URISyntaxException | IOException e1) { e1.printStackTrace(); } frame.setVisible( true ); } JTextArea textarea = new JTextArea(); JScrollPane scrollpane = new JScrollPane(textarea); try { if (clipboardService == null) clipboardService = (ClipboardService) ServiceManager.lookup("javax.jnlp.ClipboardService"); Action action = new CopyAction("Copy", null, "Copy data", new Integer(KeyEvent.VK_CONTROL + KeyEvent.VK_C)); textarea.getActionMap().put("copy", action); grabFocus = true; } catch (Exception ee) { ee.printStackTrace(); System.err.println("Copy services not available. Copy using 'Ctrl-c'."); } textarea.setDragEnabled(true); textarea.append( sb.toString() ); JFrame frame = new JFrame(); frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); frame.add(scrollpane); frame.setSize(400, 300); frame.setVisible(true);*/ }); sequencemenu.getItems().add(showdnaseq); MenuItem expalldna = new MenuItem("Export all DNA sequences"); expalldna.setOnAction(actionEvent -> { JFileChooser jfc = new JFileChooser(); jfc.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY); try { Map<Integer, FileWriter> lfw = new HashMap<Integer, FileWriter>(); if (jfc.showOpenDialog(null) == JFileChooser.APPROVE_OPTION) { File f = jfc.getSelectedFile(); for (Gene gg : getGeneTable().getSelectionModel().getSelectedItems()) { FileWriter fw = null; if (lfw.containsKey(gg.getGroupIndex())) { fw = lfw.get(gg.getGroupIndex()); } else { fw = new FileWriter(new File(f, "group_" + gg.getGroupIndex() + ".fasta")); lfw.put(gg.getGroupIndex(), fw); } Tegeval tv = gg.tegeval; fw.append(">" + tv.name + " " + tv.teg + " " + tv.eval + "\n"); for (int i = 0; i < tv.getLength(); i += 70) { fw.append(tv.getSubstring(i, Math.min(i + 70, tv.getLength())) + "\n"); } } } for (int gi : lfw.keySet()) { lfw.get(gi).close(); } } catch (IOException e1) { e1.printStackTrace(); } }); sequencemenu.getItems().add(expalldna); MenuItem exprelcont = new MenuItem("Export relevant contigs"); exprelcont.setOnAction(actionEvent -> { JFileChooser jfc = new JFileChooser(); try { Map<Integer, FileWriter> lfw = new HashMap<Integer, FileWriter>(); if (jfc.showOpenDialog(null) == JFileChooser.APPROVE_OPTION) { File f = jfc.getSelectedFile(); Set<Sequence> contset = new HashSet<Sequence>(); for (Gene gg : getGeneTable().getSelectionModel().getSelectedItems()) { Tegeval tv = gg.tegeval; contset.add(tv.getContshort()); } FileWriter fw = new FileWriter(f); for (Sequence contig : contset) { fw.append(">" + contig + "\n"); if (geneset.contigmap.containsKey(contig)) { StringBuilder dna = geneset.contigmap.get(contig).getStringBuilder(); for (int i = 0; i < dna.length(); i += 70) { fw.append(dna.substring(i, Math.min(i + 70, dna.length())) + "\n"); } } } fw.close(); } for (int gi : lfw.keySet()) { lfw.get(gi).close(); } } catch (IOException e1) { e1.printStackTrace(); } }); sequencemenu.getItems().add(exprelcont); sequencemenu.getItems().add(new SeparatorMenuItem()); MenuItem viewselrange = new MenuItem("View selected range"); viewselrange.setOnAction(actionEvent -> { JFrame frame = new JFrame(); frame.setSize(800, 600); frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); Serifier serifier = new Serifier(); JavaFasta jf = new JavaFasta((comp instanceof JApplet) ? (JApplet) comp : null, serifier, geneset.cs); jf.initGui(frame); Set<Sequence> contset = new HashSet<Sequence>(); Set<Tegeval> tvset = new HashSet<>(); if (isGeneview()) { for (Gene gg : getGeneTable().getSelectionModel().getSelectedItems()) { Tegeval tv = gg.tegeval; tvset.add(tv); //serifier.addAnnotation( tv ); contset.add(tv.getContshort()); } } else { for (GeneGroup gg : getGeneGroupTable().getSelectionModel().getSelectedItems()) { for (Tegeval tv : gg.getTegevals()) { tv.color = Color.red; tvset.add(tv); Sequence contig = tv.getContshort(); contset.add(contig); //serifier.addAnnotation( tv ); } } } /*Sequence seq; Sequence contig = tv.getContshort(); /*if (contset.containsKey(contig)) { seq = contset.get(contig); } else { if( contigmap.containsKey(contig) ) { StringBuilder dna = contigmap.get(contig).getStringBuilder(); seq = new Sequence(contig.getName(), dna, serifier.mseq); } else seq = new Sequence(contig.getName(), serifier.mseq); contset.put(contig, seq); } Annotation a = new Annotation(contig, contig.getName(), Color.green, serifier.mann); a.setStart(tv.start); a.setStop(tv.stop); a.setOri(tv.ori); a.setGroup(gg.name); a.setType("gene");*/ // seq.addAnnotation( new Annotation( seq, ) ); for (Sequence contig : contset) { int start = Integer.MAX_VALUE; int stop = Integer.MIN_VALUE; for (Tegeval tv : tvset) { if (contig == tv.seq) { start = Math.min(start, tv.start); stop = Math.max(stop, tv.stop); } } int rstart = 0; int rstop = contig.length(); if (contig.annset != null) for (Annotation tv : contig.annset) { if (contig == tv.seq) { if (tv.stop < start && tv.stop > rstart) { rstart = tv.stop; } if (tv.start > stop && tv.start < rstop) { rstop = tv.start; } } } start = rstart; stop = rstop; Sequence newseq = new Sequence(contig.getName(), new StringBuilder(contig.getSubstring(start, stop, 1)), serifier.mseq); /*if( contig.isReverse() ) { newseq.reverse(); newseq.complement(); }*/ serifier.addSequence(newseq); for (Tegeval tv : tvset) { Annotation newann = new Annotation(newseq, tv.start - start, tv.stop - start, tv.ori, tv.name); if (contig == tv.seq) { newseq.addAnnotation(newann); } serifier.addAnnotation(newann); } /*for( Annotation ann : contig.getAnnotations() ) { serifier.addAnnotation( ann ); }*/ /*if (seq.getAnnotations() != null) Collections.sort(seq.getAnnotations());*/ } jf.updateView(); frame.setVisible(true); }); sequencemenu.getItems().add(viewselrange); MenuItem viewwhole = new MenuItem("View whole contigs for selection"); viewwhole.setOnAction(actionEvent -> { JFrame frame = new JFrame(); frame.setSize(800, 600); frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); Serifier serifier = new Serifier(); JavaFasta jf = new JavaFasta((comp instanceof JApplet) ? (JApplet) comp : null, serifier, geneset.cs); jf.initGui(frame); //Map<Sequence, Sequence> contset = new HashMap<Sequence, Sequence>(); /*int[] rr = table.getSelectedRows(); for (int r : rr) { int cr = table.convertRowIndexToModel(r); Gene gg = geneset.genelist.get(cr); if (gg.species != null) { for (String sp : gg.species.keySet()) { Teginfo stv = gg.species.get(sp); for (Tegeval tv : stv.tset) { Sequence seq; Sequence contig = tv.getContshort(); if (contset.containsKey(contig)) { seq = contset.get(contig); } else { if( GeneSet.contigmap.containsKey(contig) ) { //StringBuilder dna = GeneSet.contigmap.get(contig).seq; StringBuilder dna = contig.getSequence().getStringBuilder(); seq = new Sequence(contig.getName(), dna, serifier.mseq); } else { seq = new Sequence(contig.getName(), serifier.mseq); } contset.put(contig, seq); } /* * Annotation a = jf.new Annotation( seq, * contig, Color.red ); a.setStart( tv.start ); * a.setStop( tv.stop ); a.setOri( tv.ori ); * a.setGroup( gg.name ); a.setType( "gene" ); * jf.addAnnotation( a ); * // seq.addAnnotation( new Annotation( seq, ) ); } } } }*/ Set<Sequence> contigs = new HashSet<Sequence>(); if (isGeneview()) { for (Gene gg : getGeneTable().getSelectionModel().getSelectedItems()) { Tegeval tv = gg.tegeval; tv.color = Color.red; Sequence contig = tv.getContshort(); //contig.offset = -tv.start; contigs.add(contig); } /*Annotation a = new Annotation(contig, contig.getName(), Color.red, serifier.mann); a.setStart(tv.start); a.setStop(tv.stop); a.setOri(tv.ori); a.setGroup(g.name); a.setType("gene");*/ //serifier.addAnnotation( tv ); } else { for (GeneGroup gg : getGeneGroupTable().getSelectionModel().getSelectedItems()) { for (Tegeval tv : gg.getTegevals()) { tv.color = Color.red; Sequence contig = tv.getContshort(); //contig.offset = -tv.start; contigs.add(contig); /*Annotation a = new Annotation(contig, contig.getName(), Color.red, serifier.mann); a.setStart(tv.start); a.setStop(tv.stop); a.setOri(tv.ori); a.setGroup(gg.getCommonName()); a.setType("gene");*/ //serifier.addAnnotation( tv ); } } } //Gene gg = geneset.genelist.get(cr); //for (Gene g : geneset.genelist) { //if (g.species != null) { //for (String sp : g.species.keySet()) { for (Sequence contig : contigs) { for (Annotation ann : contig.getAnnotations()) { serifier.addAnnotation(ann); } serifier.addSequence(contig); serifier.mseq.put(contig.getName(), contig); //if(contig.getAnnotations() != null) // Collections.sort(contig.getAnnotations()); } jf.updateView(); frame.setVisible(true); }); sequencemenu.getItems().add(viewwhole); sequencemenu.getItems().add(new SeparatorMenuItem()); MenuItem viewspecseq = new MenuItem("View species sequence"); viewspecseq.setOnAction(actionEvent -> { Set<String> selspec = getSelspec(GeneSetHead.this, geneset.specList); JFrame frame = new JFrame(); frame.setSize(800, 600); frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); Serifier serifier = new Serifier(); JavaFasta jf = new JavaFasta((comp instanceof JApplet) ? (JApplet) comp : null, serifier, geneset.cs); jf.initGui(frame); for (String spec : selspec) { List<Sequence> contigs = geneset.speccontigMap.get(spec); for (Sequence contig : contigs) { List<Annotation> lann = contig.getAnnotations(); if (lann != null) for (Annotation ann : lann) { serifier.addAnnotation(ann); } serifier.addSequence(contig); serifier.mseq.put(contig.getName(), contig); } } jf.updateView(); frame.setVisible(true); }); sequencemenu.getItems().add(viewspecseq); Menu windowmenu = new Menu("Tools"); MenuItem seqviewer = new MenuItem("Sequence viewer"); seqviewer.setOnAction(actionEvent -> { JFrame frame = new JFrame(); frame.setSize(800, 600); frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); Serifier serifier = new Serifier(); JavaFasta jf = new JavaFasta((comp instanceof JApplet) ? (JApplet) comp : null, serifier, geneset.cs); jf.initGui(frame); jf.updateView(); frame.setVisible(true); }); windowmenu.getItems().add(seqviewer); windowmenu.getItems().add(new SeparatorMenuItem()); MenuItem genesorter = new MenuItem("Gene sorter"); genesorter.setOnAction(actionEvent -> { try { //if( gb.isSelected() ) new GeneSorter().mynd( GeneSetHead.this, genelist, table, null, contigmap ); //else new GeneSorter().groupMynd(GeneSetHead.this, geneset.allgenegroups, geneset.specList, geneset.genelist, table, geneset.contigmap, geneset.specset); } catch (IOException e1) { e1.printStackTrace(); } }); windowmenu.getItems().add(genesorter); MenuItem specorderaction = new MenuItem("Order species list"); specorderaction.setOnAction(actionEvent -> { TreeUtil tu = new TreeUtil(); /*corrInd.clear(); for( String spec : specList ) { corrInd.add( nameFix( spec ) ); }*/ Serifier serifier = getConcatenatedSequences(false, false); Map<String, Integer> blosumap = JavaFasta.getBlosumMap(); double[] dmat = new double[serifier.lseq.size() * serifier.lseq.size()]; Sequence.distanceMatrixNumeric(serifier.lseq, dmat, null, false, false, null, blosumap); List<String> ret = new ArrayList<String>(); for (Sequence seqname : serifier.lseq) { ret.add(seqname.getName()); //.replace(' ', '_') ); } //List<String> corrInd = currentjavafasta.getNames(); //Sequence.distanceMatrixNumeric(serifier.lseq, dmat, idxs, bootstrap, cantor, ent, blosum); Node n = tu.neighborJoin(dmat, ret, null, false, false); Comparator<Node> comp2 = (o1, o2) -> { int c1 = o1.countLeaves(); int c2 = o2.countLeaves(); if (c1 > c2) return 1; else if (c1 == c2) return 0; return -1; }; tu.arrange(n, comp2); //corrInd.clear(); List<String> ordInd = n.traverse(); for (String spec : ordInd) { System.err.println(spec); } for (String oldspec : geneset.specList) { if (!ordInd.contains(oldspec)) { ordInd.add(oldspec); } } geneset.specList = ordInd; //TableModel model = table.getModel(); //table.setModel( nullmodel ); //table.setModel( model ); //table.tableChanged( new TableModelEvent( table.getModel() ) ); //table.getColumnModel(). System.err.println(geneset.specList.size()); }); MenuItem matrixaction = new MenuItem("Relation matrix"); matrixaction.setOnAction(actionEvent -> { SwingUtilities.invokeLater(() -> { JComboBox<String> descombo = new JComboBox<String>( geneset.deset.toArray(new String[geneset.deset.size()])); JCheckBox anicheck = new JCheckBox("ANImatrix"); JCheckBox plasmidcheck = new JCheckBox("Skip plasmids"); descombo.insertItemAt("", 0); descombo.setSelectedIndex(0); JOptionPane.showMessageDialog(GeneSetHead.this, new Object[] { descombo, anicheck, plasmidcheck }); String val = descombo.getSelectedItem().toString(); Collection<GeneGroup> ss = new HashSet<>(); /*int[] rr = table.getSelectedRows(); for( int r : rr ) { ss.add( geneset.allgenegroups.get( table.convertRowIndexToModel(r) ) ); }*/ ss.addAll(table.getSelectionModel().getSelectedItems()); if (ss.isEmpty()) ss = geneset.allgenegroups; Set<String> species = getSelspec(GeneSetHead.this, geneset.specList); bimg = anicheck.isSelected() ? geneset.animatrix(species, geneset.clusterMap, val, ss, plasmidcheck.isSelected()) : geneset.bmatrix(species, geneset.clusterMap, val); JFrame f = new JFrame("Relation matrix"); f.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); f.setSize(500, 500); /* * { public void paintComponent( Graphics g ) { * super.paintComponent(g); g.drawImage(bimg, 0, 0, this); } }; */ try { final DataFlavor df = new DataFlavor("text/plain;charset=utf-8"); final Transferable transferable = new Transferable() { @Override public Object getTransferData(DataFlavor arg0) throws UnsupportedFlavorException, IOException { StringBuilder ret = new StringBuilder(); int i = 0; for (String spc : geneset.specList) { if (++i == geneset.specList.size()) ret.append(spc + "\n"); else ret.append(spc + "\t"); } int where = 0; for (String spc1 : geneset.specList) { int wherex = 0; for (String spc2 : geneset.specList) { int spc1tot = 0; int spc2tot = 0; int totot = 0; int spc1totwocore = 0; int spc2totwocore = 0; int tototwocore = 0; for (Set<String> set : geneset.clusterMap.keySet()) { Set<Map<String, Set<String>>> erm = geneset.clusterMap.get(set); if (set.contains(spc1)) { if (set.size() < geneset.specList.size()) { spc1totwocore += erm.size(); for (Map<String, Set<String>> sm : erm) { Set<String> hset = sm.get(spc1); tototwocore += hset.size(); } if (set.contains(spc2)) { spc2totwocore += erm.size(); } if (spc2totwocore > spc1totwocore) System.err.println( "okoko " + spc1totwocore + " " + spc2totwocore); } spc1tot += erm.size(); for (Map<String, Set<String>> sm : erm) { Set<String> hset = sm.get(spc1); totot += hset.size(); } if (set.contains(spc2)) { spc2tot += erm.size(); } } } if (where == wherex) { if (where == geneset.specList.size() - 1) ret.append(0 + "\n"); else ret.append(0 + "\t"); } else { double hlut = (double) spc2totwocore / (double) spc1totwocore; double sval = hlut; // 1.0/( 1.1-hlut ); double val = Math.pow(50.0, sval - 0.3) - 1.0; double dval = Math.round(100.0 * (val)) / 100.0; if (wherex == geneset.specList.size() - 1) ret.append(dval + "\n"); else ret.append(dval + "\t"); } wherex++; } where++; } return new ByteArrayInputStream(ret.toString().getBytes()); } @Override public DataFlavor[] getTransferDataFlavors() { return new DataFlavor[] { df }; } @Override public boolean isDataFlavorSupported(DataFlavor arg0) { if (arg0.equals(df)) { return true; } return false; } }; final TransferComponent comp2 = new TransferComponent(bimg, transferable); TransferHandler th = new TransferHandler() { private static final long serialVersionUID = 1L; public int getSourceActions(JComponent c) { return TransferHandler.COPY_OR_MOVE; } public boolean canImport(TransferSupport support) { return false; } protected Transferable createTransferable(JComponent c) { return transferable; } public boolean importData(TransferSupport support) { return true; } }; comp2.setTransferHandler(th); comp2.setEnabled(true); JScrollPane fsc = new JScrollPane(comp2); comp2.setPreferredSize(new Dimension(bimg.getWidth(), bimg.getHeight())); JPopupMenu popup = new JPopupMenu(); popup.add(new AbstractAction("Save image") { @Override public void actionPerformed(ActionEvent e) { FileSaveService fss = null; FileContents fileContents = null; try { ByteArrayOutputStream baos = new ByteArrayOutputStream(); OutputStreamWriter osw = new OutputStreamWriter(baos); ImageIO.write(bimg, "png", baos); baos.close(); try { fss = (FileSaveService) ServiceManager.lookup("javax.jnlp.FileSaveService"); } catch (UnavailableServiceException e1) { fss = null; } if (fss != null) { ByteArrayInputStream bais = new ByteArrayInputStream(baos.toByteArray()); fileContents = fss.saveFileDialog(null, null, bais, "export.png"); bais.close(); OutputStream os = fileContents.getOutputStream(true); os.write(baos.toByteArray()); os.close(); } else { JFileChooser jfc = new JFileChooser(); if (jfc.showSaveDialog(GeneSetHead.this) == JFileChooser.APPROVE_OPTION) { File f = jfc.getSelectedFile(); FileOutputStream fos = new FileOutputStream(f); fos.write(baos.toByteArray()); fos.close(); Desktop.getDesktop().browse(f.toURI()); } } } catch (IOException e2) { e2.printStackTrace(); } } }); comp2.setComponentPopupMenu(popup); f.add(fsc); f.setVisible(true); } catch (ClassNotFoundException e1) { e1.printStackTrace(); } }); }); MenuItem tniaction = new MenuItem("TNI/ANI"); tniaction.setOnAction(actionEvent -> { SwingUtilities.invokeLater(() -> { Set<String> species = getSelspec(GeneSetHead.this, geneset.specList); String makeblastdb = "makeblastdb"; String OS = System.getProperty("os.name").toLowerCase(); if (OS.indexOf("mac") != -1) makeblastdb = "/usr/local/bin/makeblastdb"; for (String spec : species) { List<Sequence> lseq = geneset.speccontigMap.get(spec); ProcessBuilder pb = new ProcessBuilder(makeblastdb, "-dbtype", "nucl", "-title", spec, "-out", spec); File dir = new File(System.getProperty("user.home")); /*try { FileWriter w = new FileWriter( new File(dir, spec+".fna") ); for( Sequence seq : lseq ) { seq.writeSequence(w); } w.close(); } catch (IOException e2) { e2.printStackTrace(); }*/ pb.directory(dir); try { Process p = pb.start(); Writer fw = new OutputStreamWriter(p.getOutputStream()); for (Sequence seq : lseq) { seq.writeSequence(fw); } fw.close(); } catch (IOException e1) { e1.printStackTrace(); } } int y = 0; double[] matrix = new double[species.size() * species.size()]; for (String dbspec : species) { int x = 0; for (String spec : species) { //if( !spec.equals(dbspec) ) { final List<Sequence> lseq = geneset.speccontigMap.get(spec); String blastn = "blastn"; if (OS.indexOf("mac") != -1) blastn = "/usr/local/bin/blastn"; ProcessBuilder pb = new ProcessBuilder(blastn, "-db", dbspec, "-num_threads", Integer.toString(Runtime.getRuntime().availableProcessors()), "-num_alignments", "1", "-num_descriptions", "1"); //,"-max_hsps","1"); File dir = new File(System.getProperty("user.home")); pb.directory(dir); try { Process p = pb.start(); final BufferedWriter fw = new BufferedWriter( new OutputStreamWriter(p.getOutputStream())); Thread t = new Thread() { public void run() { try { for (Sequence seq : lseq) { seq.writeSplitSequence(fw); //seq.writeSequence(fw); } fw.close(); } catch (IOException e1) { e1.printStackTrace(); } } }; t.start(); //Path path = Paths.get("/Users/sigmar/"+spec+"_"+dbspec+".blastout"); //Files.copy(p.getInputStream(), path, StandardCopyOption.REPLACE_EXISTING); int tnum = 0; int tdenum = 0; double avg = 0.0; int count = 0; BufferedReader br = new BufferedReader(new InputStreamReader(p.getInputStream())); String line = br.readLine(); while (line != null) { if (line.startsWith(" Identities")) { int i = line.indexOf('('); String sub = line.substring(14, i - 1); String[] split = sub.split("/"); int num = Integer.parseInt(split[0]); int denum = Integer.parseInt(split[1]); avg += (double) num / (double) denum; tnum += num; tdenum += denum; count++; } line = br.readLine(); } br.close(); if (count > 0) avg /= count; double val = (double) tnum / (double) tdenum; matrix[y * species.size() + x] = avg;//val; System.err.println(spec + " on " + dbspec + " " + val); } catch (IOException e1) { e1.printStackTrace(); } //} x++; } y++; } geneset.corrInd.clear(); for (String spec : species) { geneset.corrInd.add(geneset.nameFix(spec)); } final BufferedImage bi = geneset.showRelation(geneset.corrInd, matrix, false); JFrame f = new JFrame("TNI matrix"); f.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); f.setSize(500, 500); JComponent comp2 = new JComponent() { public void paintComponent(Graphics g) { super.paintComponent(g); g.drawImage(bi, 0, 0, bi.getWidth(), bi.getHeight(), 0, 0, bi.getWidth(), bi.getHeight(), this); } }; Dimension dim = new Dimension(bi.getWidth(), bi.getHeight()); comp2.setPreferredSize(dim); comp2.setSize(dim); JScrollPane scroll = new JScrollPane(comp2); f.add(scroll); f.setVisible(true); }); }); MenuItem anitreeaction = new MenuItem("ANI tree"); anitreeaction.setOnAction(actionEvent -> { Set<String> species = getSelspec(GeneSetHead.this, geneset.specList); List<String> speclist = new ArrayList<String>(species); Collection<GeneGroup> allgg = new HashSet<GeneGroup>(); allgg.addAll(table.getSelectionModel().getSelectedItems()); if (allgg.isEmpty()) allgg = geneset.allgenegroups; Map<String, Integer> blosumap = JavaFasta.getBlosumMap(); double[] corrarr = new double[speclist.size() * speclist.size()]; int where = 0; for (String spec1 : speclist) { int wherex = 0; String spc1 = geneset.nameFix(spec1); //String spc1 = nameFix( spec1 ); for (String spec2 : speclist) { if (where != wherex) { int totalscore = 0; int totaltscore = 1; for (GeneGroup gg : allgg) { if ( /*gg.getSpecies().size() > 40 &&*/ gg.getSpecies().contains(spec1) && gg.getSpecies().contains(spec2)) { Teginfo ti1 = gg.species.get(spec1); Teginfo ti2 = gg.species.get(spec2); //if( ti1.tset.size() == 1 && ti2.tset.size() == 1 ) { //double bval = 0.0; int score = 0; int tscore = 1; for (Tegeval tv1 : ti1.tset) { for (Tegeval tv2 : ti2.tset) { Sequence seq1 = tv1.getAlignedSequence(); Sequence seq2 = tv2.getAlignedSequence(); if (seq1 != null && seq2 != null) { int mest = 0; int tmest = 0; int startcheck = 0; int start = -1; int stopcheck = 0; int stop = -1; for (int i = 0; i < seq1.length(); i++) { if (seq1.getCharAt(i) != '-') { startcheck |= 1; } if (seq2.getCharAt(i) != '-') { startcheck |= 2; } if (start == -1 && startcheck == 3) { start = i; break; } } for (int i = seq1.length() - 1; i >= 0; i--) { if (seq1.getCharAt(i) != '-') { stopcheck |= 1; } if (seq2.getCharAt(i) != '-') { stopcheck |= 2; } if (stop == -1 && stopcheck == 3) { stop = i + 1; break; } } //count += stop-start; for (int i = start; i < stop; i++) { char lc = seq1.getCharAt(i); char c = Character.toUpperCase(lc); //if( ) String comb = c + "" + c; if (blosumap.containsKey(comb)) tmest += blosumap.get(comb); } for (int i = start; i < stop; i++) { char lc = seq1.getCharAt(i); char c = Character.toUpperCase(lc); char lc2 = seq2.getCharAt(i); char c2 = Character.toUpperCase(lc2); String comb = c + "" + c2; if (blosumap.containsKey(comb)) mest += blosumap.get(comb); } double tani = (double) mest / (double) tmest; if (tani > (double) score / (double) tscore) { score = mest; tscore = tmest; } //ret = (double)score/(double)tscore; //int cval = tscore == 0 ? 0 : Math.min( 192, 512-score*512/tscore ); //return ret; } //if( where == 0 ) d1.add( gg.getCommonName() ); //else d2.add( gg.getCommonName() ); } } totalscore += score; totaltscore += tscore; /*if( bval > 0 ) { ani += bval; count++; }*/ //} } } double ani = (double) (totaltscore - totalscore) / (double) totaltscore; corrarr[where * speclist.size() + wherex] = ani; } wherex++; } where++; } TreeUtil tu = new TreeUtil(); geneset.corrInd.clear(); for (String spec : speclist) { geneset.corrInd.add(geneset.nameFix(spec)); } Node n = tu.neighborJoin(corrarr, geneset.corrInd, null, false, false); System.err.println(n); }); windowmenu.getItems().add(specorderaction); windowmenu.getItems().add(matrixaction); windowmenu.getItems().add(tniaction); windowmenu.getItems().add(anitreeaction); MenuItem neighbourhood = new MenuItem("Neighbourhood"); neighbourhood.setOnAction(actionEvent -> { try { Set<GeneGroup> genset = new HashSet<>(); if (!isGeneview()) { for (GeneGroup gg : table.getSelectionModel().getSelectedItems()) { genset.add(gg); } } else { for (Gene gene : gtable.getSelectionModel().getSelectedItems()) { genset.add(gene.getGeneGroup()); } } new Neighbour(genset).neighbourMynd(GeneSetHead.this, comp, geneset.genelist, geneset.contigmap); } catch (IOException e1) { e1.printStackTrace(); } }); windowmenu.getItems().add(neighbourhood); MenuItem synteny = new MenuItem("Synteny"); synteny.setOnAction(actionEvent -> { SwingUtilities.invokeLater(() -> { //Set<String> species = speciesFromCluster( clusterMap ); new Synteni().syntenyMynd(GeneSetHead.this, comp, geneset.genelist); }); }); windowmenu.getItems().add(synteny); MenuItem compareplotaction = new MenuItem("Gene atlas"); compareplotaction.setOnAction(actionEvent -> { SwingUtilities.invokeLater(() -> { try { new GeneCompare().comparePlot(GeneSetHead.this, comp, geneset.genelist, geneset.clusterMap, 8192, 8192); } catch (IOException e1) { e1.printStackTrace(); } }); /*gatest("MAT4726"); final JFrame frame = new JFrame(); frame.setDefaultCloseOperation( JFrame.DISPOSE_ON_CLOSE ); frame.setSize(800, 600); final JComponent c = new JComponent() { public void paintComponent( Graphics g ) { g.drawImage(bimg, 0, 0, frame); } }; c.setPreferredSize( new Dimension(bimg.getWidth(), bimg.getHeight()) ); JScrollPane scrollpane = new JScrollPane( c ); frame.add( scrollpane ); frame.setVisible( true );*/ }); windowmenu.getItems().add(compareplotaction); MenuItem syntenygradientaction = new MenuItem("Synteny gradient"); syntenygradientaction.setOnAction(actionEvent -> { SwingUtilities.invokeLater(() -> { Set<String> presel = new HashSet<>(); if (isGeneview()) { for (Gene g : gtable.getSelectionModel().getSelectedItems()) { presel.addAll(g.getGeneGroup().getSpecies()); } } else { for (GeneGroup gg : table.getSelectionModel().getSelectedItems()) { presel.addAll(gg.getSpecies()); } } new SyntGrad().syntGrad(GeneSetHead.this, 4096, 4096, presel); }); }); windowmenu.getItems().add(syntenygradientaction); MenuItem genexyplotaction = new MenuItem("Gene XY plot"); genexyplotaction.setOnAction(actionEvent -> SwingUtilities.invokeLater( () -> new XYPlot().xyPlot(GeneSetHead.this, comp, geneset.genelist, geneset.clusterMap))); windowmenu.getItems().add(genexyplotaction); MenuItem refalignaction = new MenuItem("Reference align"); refalignaction.setOnAction(actionEvent -> { SwingUtilities.invokeLater(() -> { final TableView<Gene> table12 = getGeneTable(); final Collection<String> specset = geneset.getSpecies(); //speciesFromCluster( clusterMap ); final List<String> species = new ArrayList<>(specset); TableModel model = new TableModel() { @Override public int getRowCount() { return species.size(); } @Override public int getColumnCount() { return 1; } @Override public String getColumnName(int columnIndex) { return null; } @Override public Class<?> getColumnClass(int columnIndex) { return String.class; } @Override public boolean isCellEditable(int rowIndex, int columnIndex) { return false; } @Override public Object getValueAt(int rowIndex, int columnIndex) { return geneset.nameFix(species.get(rowIndex)); } @Override public void setValueAt(Object aValue, int rowIndex, int columnIndex) { } @Override public void addTableModelListener(TableModelListener l) { } @Override public void removeTableModelListener(TableModelListener l) { } }; JTable table1 = new JTable(model); JTable table2 = new JTable(model); table1.getSelectionModel().setSelectionMode(ListSelectionModel.SINGLE_SELECTION); table2.getSelectionModel().setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION); JScrollPane scroll1 = new JScrollPane(table1); JScrollPane scroll2 = new JScrollPane(table2); FlowLayout flowlayout = new FlowLayout(); JComponent c = new JComponent() { }; c.setLayout(flowlayout); c.add(scroll1); c.add(scroll2); JOptionPane.showMessageDialog(comp, c); int r = table1.getSelectedRow(); int i = table1.convertRowIndexToModel(r); String spec = i == -1 ? null : species.get(i); List<Sequence> lcont = geneset.speccontigMap.get(spec); r = table2.getSelectedRow(); i = table2.convertRowIndexToModel(r); String refspec = i == -1 ? null : species.get(i); List<Sequence> lrefcont = geneset.speccontigMap.get(spec); /*ByteArrayOutputStream baos = new ByteArrayOutputStream(); Writer fw = new OutputStreamWriter( baos ); try { List<Sequence> lcont = geneset.speccontigMap.get(spec); for( Sequence seq : lcont ) { seq.writeSequence(fw); } fw.close(); } catch (IOException e1) { e1.printStackTrace(); } String comp = spec; byte[] bb = baos.toByteArray();*/ FlxReader flx = new FlxReader(); Map<String, String> env = new HashMap<String, String>(); env.put("create", "true"); //String uristr = "jar:" + geneset.zippath.toUri(); //URI geneset.zipuri = URI.create( uristr /*.replace("file://", "file:")*/ ); try { geneset.zipfilesystem = FileSystems.newFileSystem(geneset.zipuri, env); for (Path root : geneset.zipfilesystem.getRootDirectories()) { Path subf = root.resolve(spec + ".grp"); if (Files.exists(subf)) { BufferedReader br = Files.newBufferedReader(subf); Map<String, Map<String, String>> mm = flx.loadContigGraph(br); br.close(); String home = System.getProperty("user.home") + "/"; StringBuilder sb = comp != null ? flx.referenceAssembly(home, spec, refspec, lrefcont, lcont) : null; Sequence cseq = new Sequence(spec + "_chromosome", null); if (sb != null && sb.length() > 0) { br = new BufferedReader(new StringReader(sb.toString())); } else { Path sca = root.resolve(spec + ".csc"); if (!Files.exists(sca)) { sca = root.resolve(spec + ".sca"); } br = Files.newBufferedReader(sca); } //br = new BufferedReader( fr ); flx.connectContigs(br, cseq, false, new FileWriter(home + spec + "_new.fna"), spec); br.close(); } break; } } catch (Exception ex) { ex.printStackTrace(); } finally { try { geneset.zipfilesystem.close(); } catch (IOException ie) { ie.printStackTrace(); } ; } }); //flx.start( f.getParentFile().getAbsolutePath()+"/", f.getName(), false, fw, comp, bb); }); windowmenu.getItems().add(refalignaction); windowmenu.getItems().add(new SeparatorMenuItem()); MenuItem runantismash = new MenuItem("Run antismash"); runantismash.setOnAction(actionEvent -> SwingUtilities.invokeLater(new Runnable() { public void run() { try { Serifier ser = new Serifier(); Set<String> selspec = getSelspec(null, geneset.getSpecies(), null); JTextField host = new JTextField("localhost"); JOptionPane.showMessageDialog(null, host); String username = System.getProperty("user.name"); String hostname = host.getText(); /*Path[] pt = null; JFileChooser fc = new JFileChooser(); fc.setFileSelectionMode( JFileChooser.DIRECTORIES_ONLY ); if( fc.showSaveDialog(null) == JFileChooser.APPROVE_OPTION ) { pt = new Path[3]; pt[2] = fc.getSelectedFile().toPath(); }*/ List<Object> commands = new ArrayList<Object>(); //commands.add(genexyplotaction) for (String spec : selspec) { Path pp = Paths.get(userhome); Path p = pp.resolve(spec + ".gbk"); //BufferedWriter fw = Files.newBufferedWriter( p ); List<Sequence> clist = geneset.speccontigMap.get(spec); Map<String, List<Annotation>> mapan = new HashMap<String, List<Annotation>>(); Serifier serifier = new Serifier(); for (Sequence c : clist) { serifier.addSequence(c); serifier.mseq.put(c.getName(), c); List<Annotation> lann = new ArrayList<Annotation>(); if (c.getAnnotations() != null) for (Annotation ann : c.getAnnotations()) { Tegeval tv = (Tegeval) ann; Gene g = tv.getGene(); GeneGroup gg = g.getGeneGroup(); String name = g.getName(); if (gg != null && name.contains(spec)) { name = gg.getName(); } Annotation anno = new Annotation(c, tv.start, tv.stop, tv.ori, name); anno.id = tv.getGene().getId(); anno.type = "CDS"; String cazy = gg != null ? gg.getCommonCazy(geneset.cazymap) : null; if (cazy != null) anno.addDbRef("CAZY:" + cazy); lann.add(anno); } mapan.put(c.getName(), lann); } Sequences s = new Sequences(null, spec, "nucl", null, clist.size()); //serifier.addSequences(seqs); serifier.writeGenebank(p, false, true, s, mapan); //fw.close(); String apath = p.toAbsolutePath().toString(); if (hostname.equals("localhost")) { String[] cmds = { "run_antismash", apath }; //commands.add( pt ); commands.add(Arrays.asList(cmds)); } else { String aname = p.getFileName().toString(); String adir = aname.substring(0, aname.length() - 4); String cyghome = NativeRun.cygPath(userhome); String[] cmds = { "scp", apath, hostname + ":~", ";", "ssh", hostname, "run_antismash", aname, ";", "scp", "-r", hostname + ":~/" + adir, cyghome };//userhome+"~"}; //commands.add( pt ); commands.add(Arrays.asList(cmds)); } } Runnable run = new Runnable() { @Override public void run() { for (String spec : selspec) { Path p = Paths.get(userhome, spec); Map<String, String> env = new HashMap<String, String>(); env.put("create", "true"); String uristr = "jar:" + geneset.zippath.toUri(); URI zipuri = URI.create(uristr /*.replace("file://", "file:")*/ ); final List<Path> lbi = new ArrayList<Path>(); try { geneset.zipfilesystem = FileSystems.newFileSystem(geneset.zipuri, env); for (Path root : geneset.zipfilesystem.getRootDirectories()) { Path specdir = root; Files.walkFileTree(p, new SimpleFileVisitor<Path>() { @Override public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) throws IOException { final Path destFile = Paths.get(specdir.toString(), file.toString()); //System.out.printf("Extracting file %s to %s\n", file, destFile); Files.copy(file, destFile, StandardCopyOption.REPLACE_EXISTING); return FileVisitResult.CONTINUE; } @Override public FileVisitResult preVisitDirectory(Path dir, BasicFileAttributes attrs) throws IOException { String specdirstr = specdir.toString(); String dirstr = dir.toString(); final Path dirToCreate = specdir .resolve(dirstr.substring(userhome.length() + 1)); if (Files.notExists(dirToCreate)) { System.out.printf("Creating directory %s\n", dirToCreate); Files.createDirectory(dirToCreate); } return FileVisitResult.CONTINUE; } }); break; } URI uri = new URI("file://" + userhome + "/" + spec + "/index.html"); Desktop.getDesktop().browse(uri); } catch (Exception ex) { ex.printStackTrace(); } finally { try { geneset.zipfilesystem.close(); } catch (Exception e) { e.printStackTrace(); } ; } } } }; NativeRun nr = new NativeRun(run); nr.runProcessBuilder("antismash", commands, new Object[3], false, run, false); } catch (IOException e1) { e1.printStackTrace(); } } })); windowmenu.getItems().add(runantismash); MenuItem runsignalp = new MenuItem("Run signalP"); runsignalp.setOnAction(actionEvent -> SwingUtilities.invokeLater(new Runnable() { public void run() { try { Serifier ser = new Serifier(); Set<String> selspec = getSelspec(null, geneset.getSpecies(), null); JTextField host = new JTextField("localhost"); JOptionPane.showMessageDialog(null, host); String username = System.getProperty("user.name"); String hostname = host.getText(); /*Path[] pt = null; JFileChooser fc = new JFileChooser(); fc.setFileSelectionMode( JFileChooser.DIRECTORIES_ONLY ); if( fc.showSaveDialog(null) == JFileChooser.APPROVE_OPTION ) { pt = new Path[3]; pt[2] = fc.getSelectedFile().toPath(); }*/ List<Object> commands = new ArrayList<Object>(); //commands.add(genexyplotaction) try { Map<String, String> env = new HashMap<String, String>(); env.put("create", "true"); String uristr = "jar:" + geneset.zippath.toUri(); URI zipuri = URI.create(uristr /*.replace("file://", "file:")*/ ); geneset.zipfilesystem = FileSystems.newFileSystem(geneset.zipuri, env); for (Path root : geneset.zipfilesystem.getRootDirectories()) { for (String spec : selspec) { /*Path specdir = root.resolve(spec+".prodigal.fsa"); if( !Files.exists(specdir) ) { if( spec.startsWith("MAT") ) { specdir = root.resolve(spec+".gbk.aa"); } else specdir = root.resolve("fn_"+spec+"_scaffolds.prodigal.fsa"); }*/ Stream<Gene> genestream = geneset.genelist.stream() .filter(gene -> spec.equals(gene.getSpecies()) && (gene.tegeval.type == null || gene.tegeval.type.length() == 0)); Path sigout = root.resolve(spec + ".signalp"); Path[] pt = new Path[] { null, sigout, null }; if (hostname.equals("localhost")) { String[] cmds = { "signalp", "-t", "gram-", "-" }; commands.add(pt); commands.add(Arrays.asList(cmds)); } else { Path p = Paths.get(spec + ".signalp"); BufferedWriter bw = Files.newBufferedWriter(p, StandardOpenOption.CREATE, StandardOpenOption.TRUNCATE_EXISTING, StandardOpenOption.WRITE); genestream.forEachOrdered(gene -> { try { gene.writeGeneIdFasta(bw); } catch (Exception e1) { e1.printStackTrace(); } }); bw.close(); //Files.copy(specdir, p, StandardCopyOption.REPLACE_EXISTING); String[] cmds = { "scp", spec + ".signalp", hostname + ":~", ";", "ssh", hostname, "signalp", "-t", "gram-", spec + ".signalp" }; //String[] cmds = {"ssh",hostname,"signalp","-t","gram-","-"}; commands.add(pt); commands.add(Arrays.asList(cmds)); } } break; } } catch (Exception ex) { ex.printStackTrace(); } Runnable run = new Runnable() { @Override public void run() { try { geneset.zipfilesystem.close(); } catch (Exception e) { e.printStackTrace(); } ; } }; NativeRun nr = new NativeRun(run); nr.runProcessBuilder("signalp", commands, new Object[3], false, run, false); } catch (IOException e1) { e1.printStackTrace(); } } })); windowmenu.getItems().add(runsignalp); MenuItem runtransm = new MenuItem("Run TransM"); runtransm.setOnAction(actionEvent -> SwingUtilities.invokeLater(new Runnable() { public void run() { try { Serifier ser = new Serifier(); Set<String> selspec = getSelspec(null, geneset.getSpecies(), null); JTextField host = new JTextField("localhost"); JOptionPane.showMessageDialog(null, host); String username = System.getProperty("user.name"); String hostname = host.getText(); /*Path[] pt = null; JFileChooser fc = new JFileChooser(); fc.setFileSelectionMode( JFileChooser.DIRECTORIES_ONLY ); if( fc.showSaveDialog(null) == JFileChooser.APPROVE_OPTION ) { pt = new Path[3]; pt[2] = fc.getSelectedFile().toPath(); }*/ List<Object> commands = new ArrayList<>(); //commands.add(genexyplotaction) try { Map<String, String> env = new HashMap<>(); env.put("create", "true"); String uristr = "jar:" + geneset.zippath.toUri(); URI zipuri = URI.create(uristr /*.replace("file://", "file:")*/ ); geneset.zipfilesystem = FileSystems.newFileSystem(geneset.zipuri, env); for (Path root : geneset.zipfilesystem.getRootDirectories()) { for (String spec : selspec) { /*Path specdir = root.resolve(spec+".prodigal.fsa"); if( !Files.exists(specdir) ) { if( spec.startsWith("MAT") ) { specdir = root.resolve(spec+".gbk.aa"); } else specdir = root.resolve("fn_"+spec+"_scaffolds.prodigal.fsa"); }*/ Stream<Gene> genestream = geneset.genelist.stream() .filter(gene -> spec.equals(gene.getSpecies()) && (gene.tegeval.type == null || gene.tegeval.type.length() == 0)); ByteArrayOutputStream baos = new ByteArrayOutputStream(); BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(baos)); genestream.forEach(gene -> { try { gene.writeGeneIdFasta(bw); } catch (Exception e1) { e1.printStackTrace(); } }); bw.close(); baos.close(); String seqs = baos.toString(); seqs = seqs.replace('*', 'X'); byte[] bb = seqs.getBytes(); Path sigout = root.resolve(spec + ".tm"); Object[] pt = new Object[] { bb, sigout, null }; if (hostname.equals("localhost")) { String[] cmds = { "decodeanhmm", "-f", "/opt/tmhmm-2.0c/lib/TMHMM2.0.options", "-modelfile", "/opt/tmhmm-2.0c/lib/TMHMM2.0.model" }; commands.add(pt); commands.add(Arrays.asList(cmds)); } else { //Path p = Paths.get(spec+".tm"); //Files.copy(specdir, p, StandardCopyOption.REPLACE_EXISTING); String[] cmds = { "ssh", hostname, "decodeanhmm", "-f", "/opt/tmhmm-2.0c/lib/TMHMM2.0.options", "-modelfile", "/opt/tmhmm-2.0c/lib/TMHMM2.0.model" }; commands.add(pt); commands.add(Arrays.asList(cmds)); } } break; } } catch (Exception ex) { ex.printStackTrace(); } Runnable run = () -> { try { geneset.zipfilesystem.close(); } catch (Exception e) { e.printStackTrace(); } ; }; NativeRun nr = new NativeRun(run); nr.runProcessBuilder("transm", commands, new Object[3], false, run, false); } catch (IOException e1) { e1.printStackTrace(); } } })); windowmenu.getItems().add(runtransm); MenuItem runtrnascan = new MenuItem("tRNAscan"); runtrnascan.setOnAction(actionEvent -> SwingUtilities.invokeLater(() -> { try { Serifier ser = new Serifier(); Set<String> selspec = getSelspec(null, geneset.getSpecies(), null); JTextField host = new JTextField("localhost"); JOptionPane.showMessageDialog(null, host); String username = System.getProperty("user.name"); String hostname = host.getText(); /*Path[] pt = null; JFileChooser fc = new JFileChooser(); fc.setFileSelectionMode( JFileChooser.DIRECTORIES_ONLY ); if( fc.showSaveDialog(null) == JFileChooser.APPROVE_OPTION ) { pt = new Path[3]; pt[2] = fc.getSelectedFile().toPath(); }*/ List<Object> commands = new ArrayList<>(); //commands.add(genexyplotaction) try { Map<String, String> env = new HashMap<>(); env.put("create", "true"); String uristr = "jar:" + geneset.zippath.toUri(); URI zipuri = URI.create(uristr /*.replace("file://", "file:")*/ ); geneset.zipfilesystem = FileSystems.newFileSystem(geneset.zipuri, env); for (Path root : geneset.zipfilesystem.getRootDirectories()) { for (String spec : selspec) { Path specdir = root.resolve(spec + ".fna"); if (!Files.exists(specdir)) { if (spec.startsWith("MAT")) { specdir = root.resolve(spec + ".gbk.fna"); } else specdir = root.resolve("fn_" + spec + "_scaffolds.fastg"); } System.err.println(Files.exists(specdir)); Path sigout = root.resolve("trnas.txt"); if (hostname.equals("localhost1")) { Path[] pt = new Path[] { specdir, sigout, null }; String[] cmds = { "/usr/local/bin/tRNAscan-SE", "-B", "-" }; commands.add(pt); commands.add(Arrays.asList(cmds)); } else { Path[] pt = new Path[] { null, sigout, null }; Path p = Paths.get(spec + ".trnascan"); Files.copy(specdir, p, StandardCopyOption.REPLACE_EXISTING); List<String> lcmd; if (hostname.equals("localhost")) { //String[] cmds = {"/usr/local/bin/trnascan-1.4", spec + ".trnascan"}; String[] cmds = { "/usr/local/bin/tRNAscan-SE", "-B", spec + ".trnascan" }; lcmd = Arrays.asList(cmds); } else { String[] cmds = { "scp", spec + ".trnascan", hostname + ":~", ";", "ssh", hostname, "trnascan-1.4", spec + ".trnascan" }; lcmd = Arrays.asList(cmds); //String[] cmds = {"ssh",hostname,"tRNAscan-SE","-B","-"}; } commands.add(pt); commands.add(lcmd); } } break; } } catch (Exception ex) { ex.printStackTrace(); } Runnable run = () -> { try { geneset.zipfilesystem.close(); } catch (Exception e) { e.printStackTrace(); } ; }; NativeRun nr = new NativeRun(run); nr.runProcessBuilder("tRNAscan", commands, new Object[3], false, run, false); } catch (IOException e1) { e1.printStackTrace(); } })); windowmenu.getItems().add(runtrnascan); Menu select = new Menu("Select"); MenuItem breakpointselAction = new MenuItem("Select breakpoints"); breakpointselAction.setOnAction(actionEvent -> { String spec = syncolorcomb.getSelectionModel().getSelectedItem(); int rr = 0; for (Gene g : geneset.genelist) { if (!spec.equals(g.getSpecies()) && g.getSpecies().contains("eggert")) { Tegeval tv2 = g.tegeval; Annotation n2 = tv2.getNext(); Annotation p2 = tv2.getPrevious(); GeneGroup gg = g.getGeneGroup(); if (gg.getName().contains("rhodane")) { System.err.println(); } Teginfo ti = gg.getGenes(spec); int msimcount = 0; if (ti != null) { for (Tegeval tv1 : ti.tset) { int simcount = 0; Annotation n = tv1.getNext(); Annotation p = tv1.getPrevious(); GeneGroup ggg = tv1.getGene().getGeneGroup(); if (n2 != null) { if (ggg == n2.getGene().getGeneGroup()) { simcount++; } Annotation nn2 = n2.getNext(); if (nn2 != null) { if (ggg == nn2.getGene().getGeneGroup()) { simcount++; } } } if (p2 != null) { if (ggg == p2.getGene().getGeneGroup()) { simcount++; } Annotation pp2 = p2.getPrevious(); if (pp2 != null) { if (ggg == pp2.getGene().getGeneGroup()) { simcount++; } } } if (n != null) { GeneGroup ngg = n.getGene().getGeneGroup(); if (ngg == tv2.getGene().getGeneGroup()) { simcount++; } if (n2 != null) { if (ngg == n2.getGene().getGeneGroup()) { simcount++; } } if (p2 != null) { if (ngg == p2.getGene().getGeneGroup()) { simcount++; } } Annotation nn = n.getNext(); if (nn != null) { ngg = nn.getGene().getGeneGroup(); if (ngg == tv2.getGene().getGeneGroup()) { simcount++; } if (n2 != null) { if (ngg == n2.getGene().getGeneGroup()) { simcount++; } } if (p2 != null) { if (ngg == p2.getGene().getGeneGroup()) { simcount++; } } } } if (p != null) { GeneGroup pgg = p.getGene().getGeneGroup(); if (pgg == tv2.getGene().getGeneGroup()) { simcount++; } if (n2 != null) { if (pgg == n2.getGene().getGeneGroup()) { simcount++; } } if (p2 != null) { if (pgg == p2.getGene().getGeneGroup()) { simcount++; } } Annotation pp = p.getPrevious(); if (pp != null) { pgg = pp.getGene().getGeneGroup(); if (pgg == tv2.getGene().getGeneGroup()) { simcount++; } if (n2 != null) { if (pgg == n2.getGene().getGeneGroup()) { simcount++; } } if (p2 != null) { if (pgg == p2.getGene().getGeneGroup()) { simcount++; } } } } //double rat = GeneCompare.invertedGradientRatio(spec, contigs, -1.0, gg, tv); if (simcount >= msimcount) { //tv = tv1; msimcount = simcount; } //double ratio = GeneCompare.invertedGradientRatio(spec, contigs, -1.0, gg, tv); //GeneCompare.gradientColor(); } if (msimcount < 2) { gtable.getSelectionModel().select(g); } } } rr++; } /*List<Sequence> contigs = geneset.speccontigMap.get( spec ); for( Sequence c : contigs ) { for( Annotation ann : c.annset ) { Tegeval tv = (Tegeval)ann; } }*/ }); MenuItem saveselAction = new MenuItem("Save selection"); saveselAction.setOnAction(actionEvent -> { /*int[] rr = table.getSelectedRows(); if( rr.length > 0 ) { String val = Integer.toString( table.convertRowIndexToModel(rr[0]) ); for( int i = 1; i < rr.length; i++ ) { val += ","+table.convertRowIndexToModel(rr[i]); } String selname = JOptionPane.showInputDialog("Selection name"); if( comp instanceof Applet ) { try { ((GeneSetHead)comp).saveSel( selname, val); } catch (Exception e1) { e1.printStackTrace(); } } }*/ }); select.getItems().add(breakpointselAction); select.getItems().add(saveselAction); select.getItems().add(new SeparatorMenuItem()); MenuItem showall = new MenuItem("Show all"); showall.setOnAction(actionEvent -> { genefilterset.clear(); updateFilter(table, label); }); select.getItems().add(showall); MenuItem croptosel = new MenuItem("Crop to selection"); croptosel.setOnAction(actionEvent -> { Set<GeneGroup> selitems = new HashSet<>(table.getSelectionModel().getSelectedItems()); filteredData.setPredicate(p -> selitems.contains(p)); }); select.getItems().add(croptosel); MenuItem croptoinvsel = new MenuItem("Crop to inverted selection"); croptoinvsel.setOnAction(actionEvent -> { genefilterset.clear(); for (int i = 0; i < table.getItems().size(); i++) { if (!table.getSelectionModel().isSelected(i)) { genefilterset.add(i); } } updateFilter(table, label); }); select.getItems().add(croptoinvsel); MenuItem removesel = new MenuItem("Remove selection"); removesel.setOnAction(actionEvent -> { // genefilterset.clear(); //int[] rr = table.getSelectedRows(); if (genefilterset.isEmpty()) { Set<Integer> ii = new HashSet<Integer>(); for (int r : table.getSelectionModel().getSelectedIndices()) ii.add(r); for (int i = 0; i < geneset.genelist.size(); i++) { if (!ii.contains(i)) genefilterset.add(i); } } else { for (int r : table.getSelectionModel().getSelectedIndices()) { //int mr = table.convertRowIndexToModel(r); genefilterset.remove(r); } } updateFilter(table, label); }); select.getItems().add(removesel); MenuItem invsel = new MenuItem("Invert selection"); invsel.setOnAction(actionEvent -> { ObservableList<GeneGroup> selitems = table.getSelectionModel().getSelectedItems(); List<GeneGroup> newsel = new ArrayList<>(filteredData); newsel.removeAll(selitems); table.getSelectionModel().clearSelection(); newsel.stream().forEach(gg -> table.getSelectionModel().select(gg)); // genefilterset.clear(); //int[] rr = table.getSelectedRows(); /*Set<Integer> iset = new HashSet<>(); for( int r : table.getSelectionModel().getSelectedIndices() ) { iset.add( r ); } table.getSelectionModel().clearSelection(); for (int r = 0; r < table.getItems().size(); r++) { if( !iset.contains(r) ) table.getSelectionModel().select(r); /*if (table.isRowSelected(r)) table.removeRowSelectionInterval(r, r); else table.addRowSelectionInterval(r, r); }*/ }); select.getItems().add(invsel); //select.addSeparator(); select.getItems().add(new SeparatorMenuItem()); MenuItem selsinglemult = new MenuItem("Select single copy genes found in multiple strains"); selsinglemult.setOnAction(actionEvent -> { Set<String> specset = getSelspec(GeneSetHead.this, geneset.specList); for (GeneGroup gg : geneset.allgenegroups) { Set<String> checkspec = new HashSet<String>(gg.species.keySet()); checkspec.retainAll(specset); if (gg.getCommonTag() == null && checkspec.size() > 1 && gg.getTegevals().size() == gg.species.size()) {//gg.getTegevals(checkspec).size() == checkspec.size() ) { table.getSelectionModel().select(gg); //table.setro } } }); select.getItems().add(selsinglemult); MenuItem selsinglemultstrain = new MenuItem( "Select single copy genes in accessory genome of multiple strains"); selsinglemultstrain.setOnAction(actionEvent -> { Set<String> specset = getSelspec(GeneSetHead.this, geneset.specList); for (GeneGroup gg : geneset.allgenegroups) { Set<String> checkspec = new HashSet<String>(gg.species.keySet()); checkspec.retainAll(specset); if (gg.getCommonTag() == null && checkspec.size() > 1 && checkspec.size() < specset.size() && gg.getTegevals().size() == gg.species.size()) {//gg.getTegevals(checkspec).size() == checkspec.size() ) { table.getSelectionModel().select(gg); //table.setro } } }); select.getItems().add(selsinglemultstrain); MenuItem selsinglecopygenes = new MenuItem("Select single copy genes"); selsinglecopygenes.setOnAction(actionEvent -> { Set<String> specset = getSelspec(GeneSetHead.this, geneset.specList); for (GeneGroup gg : geneset.allgenegroups) { if (gg.getTegevals().size() == gg.species.size()) { table.getSelectionModel().select(gg); //table.setro } } }); select.getItems().add(selsinglecopygenes); MenuItem selduplgenes = new MenuItem("Select duplicated genes"); selduplgenes.setOnAction(actionEvent -> { for (GeneGroup gg : geneset.allgenegroups) { int cnt = 0; for (String spec : gg.species.keySet()) { Teginfo ti = gg.species.get(spec); if (ti.tset.size() == 2) { List<Tegeval> ta = new ArrayList<Tegeval>(ti.tset); if (ta.get(0).getNext() == ta.get(1) || ta.get(0).getPrevious() == ta.get(1)) cnt++; } } if ((float) cnt / (float) gg.species.size() > 0.7) { table.getSelectionModel().select(gg); } } }); select.getItems().add(selduplgenes); MenuItem seltriplgenes = new MenuItem("Select triplicated genes"); seltriplgenes.setOnAction(actionEvent -> { for (GeneGroup gg : geneset.allgenegroups) { int cnt = 0; for (String spec : gg.species.keySet()) { Teginfo ti = gg.species.get(spec); if (ti.tset.size() == 3) { List<Tegeval> ta = new ArrayList<Tegeval>(ti.tset); if ((ta.get(0).getNext() == ta.get(1) || ta.get(0).getPrevious() == ta.get(1)) && (ta.get(1).getNext() == ta.get(2) || ta.get(1).getPrevious() == ta.get(2))) cnt++; } } if ((float) cnt / (float) gg.species.size() > 0.7) { table.getSelectionModel().select(gg); } } }); select.getItems().add(seltriplgenes); MenuItem selplasmidgenes = new MenuItem("Select plasmid genes"); selplasmidgenes.setOnAction(actionEvent -> { for (GeneGroup gg : geneset.allgenegroups) { if (gg.isOnAnyPlasmid()) { table.getSelectionModel().select(gg); } /*int cnt = 0; for( String spec : gg.species.keySet() ) { Teginfo ti = gg.species.get( spec ); if( ti.tset.size() == 3 ) { List<Tegeval> ta = new ArrayList<Tegeval>( ti.tset ); if( (ta.get(0).getNext() == ta.get(1) || ta.get(0).getPrevious() == ta.get(1)) && (ta.get(1).getNext() == ta.get(2) || ta.get(1).getPrevious() == ta.get(2))) cnt++; } } if( (float)cnt / (float)gg.species.size() > 0.7 ) { int r = table.convertRowIndexToView(gg.index); table.addRowSelectionInterval(r, r); }*/ } }); select.getItems().add(selplasmidgenes); MenuItem selectphagegenes = new MenuItem("Select phage genes"); selectphagegenes.setOnAction(actionEvent -> { for (GeneGroup gg : geneset.allgenegroups) { if (gg.isInAnyPhage()) { table.getSelectionModel().select(gg); } /*int cnt = 0; for( String spec : gg.species.keySet() ) { Teginfo ti = gg.species.get( spec ); if( ti.tset.size() == 3 ) { List<Tegeval> ta = new ArrayList<Tegeval>( ti.tset ); if( (ta.get(0).getNext() == ta.get(1) || ta.get(0).getPrevious() == ta.get(1)) && (ta.get(1).getNext() == ta.get(2) || ta.get(1).getPrevious() == ta.get(2))) cnt++; } } if( (float)cnt / (float)gg.species.size() > 0.7 ) { int r = table.convertRowIndexToView(gg.index); table.addRowSelectionInterval(r, r); }*/ } }); select.getItems().add(selectphagegenes); select.getItems().add(new SeparatorMenuItem()); MenuItem selectsharingaction = new MenuItem("Select sharing"); selectsharingaction.setOnAction(actionEvent -> { RadioButton panbtn = new RadioButton("Pan"); RadioButton corebtn = new RadioButton("Core"); RadioButton blehbtn = new RadioButton("Only in"); ToggleGroup tg = new ToggleGroup(); panbtn.setToggleGroup(tg); corebtn.setToggleGroup(tg); blehbtn.setToggleGroup(tg); HBox sp = new HBox(); sp.getChildren().add(panbtn); sp.getChildren().add(corebtn); sp.getChildren().add(blehbtn); Scene scene = new Scene(sp); //FlowLayout flowlayout = new FlowLayout(); final JFXPanel c = new JFXPanel(); c.setScene(scene); /*Group root = new Group(); Scene scene = new Scene(root, javafx.scene.paint.Color.ALICEBLUE); root.getChildren().add(panbtn); root.getChildren().add(corebtn); root.getChildren().add(blehbtn); JFXPanel fxpanel = new JFXPanel(); fxpanel.setScene( scene );*/ //bg.add( panbtn ); //bg.add( corebtn ); //bg.add( blehbtn ); corebtn.setSelected(true); //Object[] objs = new Object[] { panbtn, corebtn }; //JOptionPane.showMessageDialog( geneset, objs, "Select id types", JOptionPane.PLAIN_MESSAGE ); SwingUtilities.invokeLater(new Runnable() { public void run() { final List<String> species = geneset.getSpecies(); TableModel model = new TableModel() { @Override public int getRowCount() { return species.size(); } @Override public int getColumnCount() { return 1; } @Override public String getColumnName(int columnIndex) { return null; } @Override public Class<?> getColumnClass(int columnIndex) { return String.class; } @Override public boolean isCellEditable(int rowIndex, int columnIndex) { return false; } @Override public Object getValueAt(int rowIndex, int columnIndex) { return species.get(rowIndex); } @Override public void setValueAt(Object aValue, int rowIndex, int columnIndex) { } @Override public void addTableModelListener(TableModelListener l) { } @Override public void removeTableModelListener(TableModelListener l) { } }; JTable table = new JTable(model); table.getSelectionModel().setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION); JScrollPane scroll = new JScrollPane(table); Object[] objs = new Object[] { scroll, c }; JOptionPane.showMessageDialog(comp, objs); final Set<String> specs = new HashSet<String>(); int[] rr = table.getSelectedRows(); for (int r : rr) { String spec = (String) table.getValueAt(r, 0); specs.add(spec); } Platform.runLater(new Runnable() { public void run() { for (GeneGroup gg : geneset.allgenegroups) { if (blehbtn.isSelected()) { Set<String> ss = new HashSet<String>(gg.species.keySet()); ss.removeAll(specs); if (ss.size() == 0) { GeneSetHead.this.table.getSelectionModel().select(gg); } } else if (gg.species.keySet().containsAll(specs) && (panbtn.isSelected() || specs.size() == gg.species.size())) { GeneSetHead.this.table.getSelectionModel().select(gg); } } } }); } }); }); select.getItems().add(selectsharingaction); MenuItem selectdirtyaction = new MenuItem("Select dirty"); selectdirtyaction.setOnAction(actionEvent -> { if (!isGeneview()) { int i = 0; for (GeneGroup gg : geneset.allgenegroups) { if (gg.containsDirty()) { table.getSelectionModel().select(gg); } i++; } } }); select.getItems().add(selectdirtyaction); MenuItem selectdesignationaction = new MenuItem("Select designation"); selectdesignationaction.setOnAction(actionEvent -> { JComboBox<String> descombo = new JComboBox<String>( geneset.deset.toArray(new String[geneset.deset.size()])); descombo.insertItemAt("", 0); descombo.setSelectedIndex(0); JOptionPane.showMessageDialog(GeneSetHead.this, descombo); String seldes = (String) descombo.getSelectedItem(); if (!isGeneview()) { int i = 0; for (GeneGroup gg : geneset.allgenegroups) { if (gg.genes != null) for (Gene g : gg.genes) { if (seldes.equals(g.tegeval.designation)) { table.getSelectionModel().select(gg); } } i++; } } }); select.getItems().add(selectdesignationaction); MenuItem blastselect = new MenuItem("Blast select"); blastselect.setOnAction(actionEvent -> SwingUtilities.invokeLater(() -> blast(false))); select.getItems().add(blastselect); MenuItem blastxselect = new MenuItem("Blastx select"); blastxselect.setOnAction(actionEvent -> SwingUtilities.invokeLater(() -> blast(true))); select.getItems().add(blastxselect); MenuItem blastnselect = new MenuItem("Blastn select"); blastnselect.setOnAction(actionEvent -> SwingUtilities.invokeLater(() -> blastn(true))); select.getItems().add(blastnselect); MenuItem blastsearch = new MenuItem("Blastn search"); blastsearch.setOnAction(actionEvent -> SwingUtilities.invokeLater(() -> blastn(false))); select.getItems().add(blastsearch); menubar.getMenus().add(file); menubar.getMenus().add(edit); menubar.getMenus().add(view); menubar.getMenus().add(sequencemenu); menubar.getMenus().add(windowmenu); menubar.getMenus().add(select); menubar.getMenus().add(help); if (comp != null) { final Window window = SwingUtilities.windowForComponent(comp); initFSKeyListener(window); if (comp instanceof JFrame || window instanceof JFrame) { JFrame frame = (JFrame) (window == null ? comp : window); if (!frame.isResizable()) frame.setResizable(true); frame.addKeyListener(keylistener); frame.setJMenuBar(jmenubar); } } final Button jb = new Button("Atlas"); jb.setOnAction(event -> { try { URL url = new URL("file:///home/sigmar/workspace/distann/bin/circle.html"); GeneSetHead.this.getAppletContext().showDocument(url, "_blank"); } catch (MalformedURLException e1) { e1.printStackTrace(); } }); try { newSoft(jb, comp, genetable, upper, lower, toolbar, btoolbar, GeneSetHead.this, selcomb); } catch (IOException e) { e.printStackTrace(); } if (comp != null) { if (comp instanceof Applet) try { ((GeneSetHead) comp).saveSel(null, null); } catch (NoSuchMethodError | Exception e1) { e1.printStackTrace(); } //comp.add( cc ); } }
From source file:org.ut.biolab.medsavant.client.view.dialog.SavantExportForm.java
private void exportButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_exportButtonActionPerformed //exportButton.setEnabled(false); //chooseFileButton.setEnabled(false); //for (JCheckBox box : checkBoxes) { // box.setEnabled(false); //}//from w w w . j a v a 2 s . c om progressDialog = new JDialog(); progressDialog.setTitle("Show in Savant"); JPanel p = new JPanel(); p.setPreferredSize(new Dimension(300, 100)); p.setLayout(new BorderLayout()); p.add(new WaitPanel("Exporting Savant Project")); progressDialog.getContentPane().add(p); progressDialog.pack(); progressDialog.setLocationRelativeTo(null); this.setVisible(false); progressDialog.setVisible(true); new MedSavantWorker<Void>("SavantExportForm") { @Override protected void showProgress(double fraction) { throw new UnsupportedOperationException("Not supported yet."); } @Override protected void showSuccess(Void result) { throw new UnsupportedOperationException("Not supported yet."); } @Override protected Void doInBackground() throws Exception { export(); return null; } }.execute(); }
From source file:renderer.DependencyGrapher.java
/** * create an instance of a simple graph in two views with controls to * demo the features./*from w w w. j a va2 s .c om*/ * */ public DependencyGrapher() { // create a simple graph for the demo final DependencyDirectedSparceMultiGraph<String, Number> graph = createGraph(); //TestGraphs.getOneComponentGraph(); // the preferred sizes for the two views // create one layout for the graph final FRLayout2<String, Number> layout = new FRLayout2<String, Number>(graph); layout.setMaxIterations(500); VisualizationModel<String, Number> vm = new DefaultVisualizationModel<String, Number>(layout, preferredSize1); Transformer<Number, String> stringer = new Transformer<Number, String>() { public String transform(Number e) { if (graph.getEdgeAttributes(e) != null) { return graph.getEdgeAttributes(e).toString(); } return null; } }; // create 2 views that share the same model final VisualizationViewer<String, Number> vv = new VisualizationViewer<String, Number>(vm, preferredSize1); vv.setBackground(Color.white); vv.getRenderContext().setEdgeLabelTransformer(stringer); vv.getRenderContext().setEdgeDrawPaintTransformer( new PickableEdgePaintTransformer<String, Number>(vv.getPickedEdgeState(), Color.black, Color.cyan)); vv.getRenderContext().setVertexFillPaintTransformer( new PickableVertexPaintTransformer<String>(vv.getPickedVertexState(), Color.red, Color.yellow)); vv.getRenderContext().setVertexLabelTransformer(new ToStringLabeller<String>()); vv.getRenderer().getVertexLabelRenderer().setPosition(Renderer.VertexLabel.Position.AUTO); // add default listener for ToolTips vv.setVertexToolTipTransformer(new ToStringLabeller<String>()); // ToolTipManager.sharedInstance().setDismissDelay(10000); Container content = getContentPane(); Container panel = new JPanel(new BorderLayout()); GraphZoomScrollPane gzsp = new GraphZoomScrollPane(vv); panel.add(gzsp); helpDialog = new JDialog(); helpDialog.getContentPane().add(new JLabel(instructions)); RenderContext<String, Number> rc = vv.getRenderContext(); AnnotatingGraphMousePlugin annotatingPlugin = new AnnotatingGraphMousePlugin(rc); // create a GraphMouse for the main view // final AnnotatingModalGraphMouse graphMouse = new AnnotatingModalGraphMouse(rc, annotatingPlugin); vv.setGraphMouse(graphMouse); vv.addKeyListener(graphMouse.getModeKeyListener()); final ScalingControl scaler = new CrossoverScalingControl(); JButton filterReset = new JButton("Reset"); filterReset.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { vv.getModel().setGraphLayout(layout); } }); JButton filterFilter = new JButton("Filter"); filterReset.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { vv.getModel().setGraphLayout(layout); } }); JRadioButton filterDirectionInOut = new JRadioButton("In/Out"); filterDirectionInOut.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { System.out.println("Dependency Direction: " + EdgeType.IN_OUT); _filterEdgeDirection = EdgeType.IN_OUT; filterLayout = getNewLayout(graph, layout); vv.getModel().setGraphLayout(filterLayout); } }); JRadioButton filterDirectionIn = new JRadioButton("In"); filterDirectionIn.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { System.out.println("Dependency Direction: " + EdgeType.IN); _filterEdgeDirection = EdgeType.IN; filterLayout = getNewLayout(graph, layout); vv.getModel().setGraphLayout(filterLayout); } }); JRadioButton filterDirectionOut = new JRadioButton("Out"); filterDirectionOut.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { System.out.println("Dependency Direction: " + EdgeType.OUT); _filterEdgeDirection = EdgeType.OUT; filterLayout = getNewLayout(graph, layout); vv.getModel().setGraphLayout(filterLayout); } }); ButtonGroup filterRadios = new ButtonGroup(); filterRadios.add(filterDirectionInOut); filterRadios.add(filterDirectionIn); filterRadios.add(filterDirectionOut); filterRadios.setSelected(filterDirectionInOut.getModel(), true); JComboBox modeBox = graphMouse.getModeComboBox(); modeBox.setSelectedItem(ModalGraphMouse.Mode.PICKING); final JComboBox filterBox = new JComboBox(graph.getVertices().toArray()); filterBox.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { _filterChoice = filterBox.getSelectedItem().toString(); System.out.println(_filterChoice); filterLayout = getNewLayout(graph, layout); vv.getModel().setGraphLayout(filterLayout); } }); JButton help = new JButton("Help"); help.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { helpDialog.pack(); helpDialog.setVisible(true); } }); JPanel controls = new JPanel(); JPanel modeControls = new JPanel(); modeControls.setBorder(BorderFactory.createTitledBorder("Mouse Mode")); modeControls.add(graphMouse.getModeComboBox()); controls.add(modeControls); JPanel annotationControlPanel = new JPanel(); annotationControlPanel.setBorder(BorderFactory.createTitledBorder("Annotation Controls")); AnnotationControls annotationControls = new AnnotationControls(annotatingPlugin); annotationControlPanel.add(annotationControls.getAnnotationsToolBar()); controls.add(annotationControlPanel); JPanel helpControls = new JPanel(); helpControls.setBorder(BorderFactory.createTitledBorder("Help")); helpControls.add(help); controls.add(helpControls); JPanel filterControls = new JPanel(); filterControls.setBorder(BorderFactory.createTitledBorder("Filter")); filterControls.add(filterBox); filterControls.add(filterDirectionInOut); filterControls.add(filterDirectionIn); filterControls.add(filterDirectionOut); filterControls.add(filterReset); controls.add(filterControls); content.add(panel); content.add(controls, BorderLayout.SOUTH); }
From source file:uk.ac.ucl.cs.cmic.giftcloud.uploadapp.ConfigurationDialog.java
ConfigurationDialog(final Component owner, final UploaderGuiController controller, final GiftCloudPropertiesFromApplication giftCloudProperties, final ProjectListModel projectListModel, final ResourceBundle resourceBundle, final GiftCloudDialogs giftCloudDialogs, final GiftCloudReporter reporter) { this.controller = controller; this.giftCloudProperties = giftCloudProperties; this.projectListModel = projectListModel; this.resourceBundle = resourceBundle; this.giftCloudDialogs = giftCloudDialogs; this.reporter = reporter; temporaryDropDownListModel = new TemporaryProjectListModel(projectListModel, giftCloudProperties.getLastProject()); componentToCenterDialogOver = owner; dialog = new JDialog(); dialog.setModal(true);//from ww w . j a v a 2 s . co m dialog.setResizable(false); // Call custom dialog close code when the close button is clicked dialog.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE); dialog.addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent ev) { closeDialog(); } }); dialog.setLocationRelativeTo(componentToCenterDialogOver); // without this, appears at TLHC rather then center of parent or screen dialog.setTitle(resourceBundle.getString("configurationDialogTitle")); final GridBagConstraints sectionTitleConstraints = new GridBagConstraints(); sectionTitleConstraints.gridx = 0; sectionTitleConstraints.gridy = 1; sectionTitleConstraints.gridwidth = 2; sectionTitleConstraints.weightx = 1; sectionTitleConstraints.weighty = 1; sectionTitleConstraints.anchor = GridBagConstraints.CENTER; sectionTitleConstraints.fill = GridBagConstraints.HORIZONTAL; final GridBagConstraints labelConstraints = new GridBagConstraints(); labelConstraints.gridx = 0; labelConstraints.gridy = 0; labelConstraints.gridwidth = 1; labelConstraints.weightx = 1; labelConstraints.weighty = 1; labelConstraints.anchor = GridBagConstraints.LINE_START; labelConstraints.fill = GridBagConstraints.NONE; final GridBagConstraints inputConstraints = new GridBagConstraints(); inputConstraints.gridx = 1; inputConstraints.gridy = 0; inputConstraints.gridwidth = 1; inputConstraints.weightx = 1; inputConstraints.weighty = 1; inputConstraints.anchor = GridBagConstraints.LINE_END; inputConstraints.fill = GridBagConstraints.HORIZONTAL; GridBagConstraints separatorConstraint = new GridBagConstraints(); separatorConstraint.weightx = 1.0; separatorConstraint.fill = GridBagConstraints.HORIZONTAL; separatorConstraint.gridwidth = GridBagConstraints.REMAINDER; // The panel containing the GIFT-Cloud server configuration final JPanel giftCloudServerPanel = new JPanel(); { GridBagLayout projectUploadlayout = new GridBagLayout(); giftCloudServerPanel.setLayout(projectUploadlayout); JLabel serverPanelLabel = new JLabel(resourceBundle.getString("configPanelServerConfig"), SwingConstants.CENTER); giftCloudServerPanel.add(serverPanelLabel, sectionTitleConstraints); // GIFT-Cloud server URL { labelConstraints.gridwidth = 1; labelConstraints.gridy = 2; final JLabel giftCloudServerLabel = new JLabel(resourceBundle.getString("giftCloudServerText"), SwingConstants.RIGHT); giftCloudServerLabel.setToolTipText(resourceBundle.getString("giftCloudServerTextToolTipText")); giftCloudServerPanel.add(giftCloudServerLabel, labelConstraints); giftCloudServerText = new AutoFocusTextField(giftCloudProperties.getGiftCloudUrl().orElse(""), textFieldLengthForGiftCloudServerUrl); inputConstraints.gridy = 2; giftCloudServerPanel.add(giftCloudServerText, inputConstraints); } // GIFT-Cloud username { labelConstraints.gridy = 3; final JLabel giftCloudUserNameLabel = new JLabel(resourceBundle.getString("giftCloudUsername"), SwingConstants.RIGHT); giftCloudUserNameLabel.setToolTipText(resourceBundle.getString("giftCloudUsernameToolTipText")); giftCloudServerPanel.add(giftCloudUserNameLabel, labelConstraints); final Optional<String> serverUrl = giftCloudProperties.getLastUserName(); final String initialServerText = serverUrl.isPresent() ? serverUrl.get() : ""; giftCloudUsernameText = new AutoFocusTextField(initialServerText); inputConstraints.gridy = 3; giftCloudServerPanel.add(giftCloudUsernameText, inputConstraints); } // GIFT-Cloud password { labelConstraints.gridy = 4; final JLabel giftCloudPasswordLabel = new JLabel(resourceBundle.getString("giftCloudPassword"), SwingConstants.RIGHT); giftCloudPasswordLabel.setToolTipText(resourceBundle.getString("giftCloudPasswordToolTipText")); giftCloudServerPanel.add(giftCloudPasswordLabel, labelConstraints); final Optional<char[]> password = giftCloudProperties.getLastPassword(); final char[] initialPassword = password.isPresent() ? password.get() : "".toCharArray(); giftCloudPasswordText = new JPasswordField(new String(initialPassword), 16); // Shouldn't create a String but there's no other way to initialize the password field inputConstraints.gridy = 4; giftCloudServerPanel.add(giftCloudPasswordText, inputConstraints); } // Project list { labelConstraints.gridy = 5; JLabel projectListLabel = new JLabel(resourceBundle.getString("giftCloudProjectLabelText"), SwingConstants.RIGHT); giftCloudServerPanel.add(projectListLabel, labelConstraints); inputConstraints.gridy = 5; projectList = new BackwardsCompatibleComboBox(); projectList.setEditable(false); projectList.setToolTipText(resourceBundle.getString("giftCloudProjectTooltip")); giftCloudServerPanel.add(projectList, inputConstraints); labelConstraints.gridx = 1; projectListWaitingLabel = new JLabel(resourceBundle.getString("giftCloudProjectWaitingLabelText"), SwingConstants.RIGHT); giftCloudServerPanel.add(projectListWaitingLabel, labelConstraints); labelConstraints.gridx = 0; } // Subject prefix { labelConstraints.gridy = 6; JLabel subjectPrefixLabel = new JLabel(resourceBundle.getString("configPanelListenerSubjectPrefix"), SwingConstants.RIGHT); subjectPrefixLabel .setToolTipText(resourceBundle.getString("configPanelListenerSubjectPrefixTooltip")); giftCloudServerPanel.add(subjectPrefixLabel, labelConstraints); inputConstraints.gridy = 6; final Optional<String> subjectPrefixText = giftCloudProperties.getSubjectPrefix(); subjectPrefixField = new AutoFocusTextField(subjectPrefixText.orElse("")); giftCloudServerPanel.add(subjectPrefixField, inputConstraints); } } // Local Dicom node configuration final JPanel listenerPanel = new JPanel(); { GridBagLayout listenerPanellayout = new GridBagLayout(); listenerPanel.setLayout(listenerPanellayout); JSeparator separator = new JSeparator(); listenerPanel.add(separator, separatorConstraint); JLabel listenerPanelLabel = new JLabel(resourceBundle.getString("configPanelListenerConfig"), SwingConstants.CENTER); listenerPanel.add(listenerPanelLabel, sectionTitleConstraints); { labelConstraints.gridy = 2; JLabel listeningAETitleJLabel = new JLabel(resourceBundle.getString("configPanelListenerAe"), SwingConstants.RIGHT); listeningAETitleJLabel.setToolTipText(resourceBundle.getString("configPanelListenerAeToolTip")); listenerPanellayout.setConstraints(listeningAETitleJLabel, labelConstraints); listenerPanel.add(listeningAETitleJLabel); inputConstraints.gridy = 2; final String listeningAETitleInitialText = giftCloudProperties.getListenerAETitle(); listeningAETitleField = new AutoFocusTextField(listeningAETitleInitialText); listenerPanellayout.setConstraints(listeningAETitleField, inputConstraints); listenerPanel.add(listeningAETitleField); } { labelConstraints.gridy = 3; JLabel listeningPortJLabel = new JLabel(resourceBundle.getString("configPanelListenerPort"), SwingConstants.RIGHT); listeningPortJLabel.setToolTipText(resourceBundle.getString("configPanelListenerPortToolTip")); listenerPanellayout.setConstraints(listeningPortJLabel, labelConstraints); listenerPanel.add(listeningPortJLabel); inputConstraints.gridy = 3; final int port = giftCloudProperties.getListeningPort(); final String portValue = Integer.toString(port); listeningPortField = new AutoFocusTextField(portValue); listenerPanellayout.setConstraints(listeningPortField, inputConstraints); listenerPanel.add(listeningPortField); } { labelConstraints.gridy = 4; JLabel patientListExportFolderLabel = new JLabel( resourceBundle.getString("configPanelListenerPatientListExportFolder"), SwingConstants.RIGHT); patientListExportFolderLabel.setToolTipText( resourceBundle.getString("configPanelListenerPatientListExportFolderTooltip")); listenerPanellayout.setConstraints(patientListExportFolderLabel, labelConstraints); listenerPanel.add(patientListExportFolderLabel); inputConstraints.gridy = 4; final Optional<String> patientListExportFolder = giftCloudProperties.getPatientListExportFolder(); patientListExportFolderField = new AutoFocusTextField(patientListExportFolder.orElse("")); listenerPanellayout.setConstraints(patientListExportFolderField, inputConstraints); listenerPanel.add(patientListExportFolderField); } // Patient list spreadsheet password { labelConstraints.gridy = 5; final JLabel patientListSpreadsheetPasswordLabel = new JLabel( resourceBundle.getString("configPanelListenerPatientListSpreadhsheetPassword"), SwingConstants.RIGHT); patientListSpreadsheetPasswordLabel.setToolTipText( resourceBundle.getString("configPanelListenerPatientListSpreadhsheetPasswordTooltip")); listenerPanel.add(patientListSpreadsheetPasswordLabel, labelConstraints); final Optional<char[]> password = giftCloudProperties.getPatientListPassword(); final char[] initialPassword = password.isPresent() ? password.get() : "".toCharArray(); patientListSpreadsheetPasswordField = new JPasswordField(new String(initialPassword), 16); // Shouldn't create a String but there's no other way to initialize the password field inputConstraints.gridy = 5; listenerPanel.add(patientListSpreadsheetPasswordField, inputConstraints); } } // Remote PACS configuration final JPanel remoteAEPanel = new JPanel(); { GridBagLayout pacsPanellayout = new GridBagLayout(); remoteAEPanel.setLayout(pacsPanellayout); JSeparator separator = new JSeparator(); remoteAEPanel.add(separator, separatorConstraint); JLabel remotePanelLabel = new JLabel(resourceBundle.getString("pacsPanelListenerConfig"), SwingConstants.CENTER); remoteAEPanel.add(remotePanelLabel, sectionTitleConstraints); { labelConstraints.gridy = 2; JLabel remoteAeTitleLabel = new JLabel(resourceBundle.getString("configPanelPacsAeTitle"), SwingConstants.RIGHT); remoteAeTitleLabel.setToolTipText(resourceBundle.getString("configPanelPacsAeTitleTooltip")); remoteAEPanel.add(remoteAeTitleLabel, labelConstraints); final Optional<String> pacsAeTitle = giftCloudProperties.getPacsAeTitle(); remoteAETitleField = new AutoFocusTextField(pacsAeTitle.isPresent() ? pacsAeTitle.get() : ""); inputConstraints.gridy = 2; remoteAEPanel.add(remoteAETitleField, inputConstraints); } { labelConstraints.gridy = 3; JLabel remoteAeHostLabel = new JLabel(resourceBundle.getString("configPanelPacsHostname"), SwingConstants.RIGHT); remoteAeHostLabel.setToolTipText(resourceBundle.getString("configPanelPacsHostnameTooltip")); remoteAEPanel.add(remoteAeHostLabel, labelConstraints); remoteAEHostName = new AutoFocusTextField(giftCloudProperties.getPacsHostName().orElse("")); inputConstraints.gridy = 3; remoteAEPanel.add(remoteAEHostName, inputConstraints); } { labelConstraints.gridy = 4; JLabel remoteAeTitleLabel = new JLabel(resourceBundle.getString("configPanelPacsPort"), SwingConstants.RIGHT); remoteAeTitleLabel.setToolTipText(resourceBundle.getString("configPanelPacsPortTooltip")); remoteAEPanel.add(remoteAeTitleLabel, labelConstraints); remoteAEPortField = new AutoFocusTextField(Integer.toString(giftCloudProperties.getPacsPort())); inputConstraints.gridy = 4; remoteAEPanel.add(remoteAEPortField, inputConstraints); } } // The panel containing the cancel and apply buttons JPanel buttonPanel = new JPanel(); JPanel closeButtonPanel = new JPanel(); { final GridBagLayout buttonPanellayout = new GridBagLayout(); buttonPanel.setLayout(buttonPanellayout); JSeparator separator = new JSeparator(); buttonPanel.add(separator, separatorConstraint); closeButtonPanel.setLayout(new FlowLayout(FlowLayout.RIGHT)); JButton cancelButton = new JButton(resourceBundle.getString("cancelSettingsButtonLabelText")); cancelButton.setToolTipText(resourceBundle.getString("cancelSettingsButtonToolTipText")); closeButtonPanel.add(cancelButton); cancelButton.addActionListener(new CancelActionListener()); JButton applyButton = new JButton(resourceBundle.getString("applySettingsButtonLabelText")); applyButton.setToolTipText(resourceBundle.getString("applySettingsButtonToolTipText")); closeButtonPanel.add(applyButton); applyButton.addActionListener(new ApplyActionListener()); JButton closeButton = new JButton(resourceBundle.getString("closeSettingsButtonLabelText")); closeButton.setToolTipText(resourceBundle.getString("closeSettingsButtonToolTipText")); closeButtonPanel.add(closeButton); closeButton.addActionListener(new CloseActionListener()); final GridBagConstraints constraints = new GridBagConstraints(); constraints.gridx = 0; constraints.gridy = 1; constraints.weightx = 1; constraints.weighty = 1; constraints.insets = new Insets(5, 5, 5, 5); constraints.fill = GridBagConstraints.HORIZONTAL; buttonPanellayout.setConstraints(closeButtonPanel, constraints); buttonPanel.add(closeButtonPanel); } // The main panel of the configuration dialog JPanel configPanel = new JPanel(); { final GridBagLayout configPanelLayout = new GridBagLayout(); configPanel.setLayout(configPanelLayout); { final GridBagConstraints constraints = new GridBagConstraints(); constraints.gridx = 0; constraints.gridy = 0; constraints.weightx = 1; constraints.weighty = 1; constraints.insets = new Insets(5, 5, 5, 5); constraints.fill = GridBagConstraints.HORIZONTAL; configPanelLayout.setConstraints(giftCloudServerPanel, constraints); configPanel.add(giftCloudServerPanel); } { final GridBagConstraints constraints = new GridBagConstraints(); constraints.gridx = 0; constraints.gridy = 1; constraints.weightx = 1; constraints.weighty = 1; constraints.insets = new Insets(5, 5, 5, 5); constraints.fill = GridBagConstraints.HORIZONTAL; configPanelLayout.setConstraints(listenerPanel, constraints); configPanel.add(listenerPanel); } { final GridBagConstraints constraints = new GridBagConstraints(); constraints.gridx = 0; constraints.gridy = 2; constraints.insets = new Insets(5, 5, 5, 5); constraints.fill = GridBagConstraints.HORIZONTAL; configPanelLayout.setConstraints(remoteAEPanel, constraints); configPanel.add(remoteAEPanel); } { final GridBagConstraints constraints = new GridBagConstraints(); constraints.gridx = 0; constraints.gridy = 3; constraints.insets = new Insets(5, 5, 5, 5); constraints.fill = GridBagConstraints.HORIZONTAL; configPanelLayout.setConstraints(buttonPanel, constraints); configPanel.add(buttonPanel); } } projectList.setModel(temporaryDropDownListModel); showProjectList(projectListModel.isEnabled()); // Create a listener to enable/disable the project list when it is set from the server. // The reason for this is that the project list is set after logging into the server, which can happen asynchronously after property changes have been applied. // If the server was configured in the dialog and apply clicked, it might take a few seconds for the project list to be updated, and we want it to become available when this happens projectListEnabledListener = new DropDownListModel.EnabledListener<Boolean>() { @Override public void statusChanged(final Boolean visibility) { showProjectList(projectListModel.isEnabled()); } }; projectListModel.addListener(projectListEnabledListener); GridBagLayout layout = new GridBagLayout(); dialog.setLayout(layout); Container content = dialog.getContentPane(); content.add(configPanel); dialog.pack(); dialog.setVisible(true); dialog.pack(); }
From source file:Widgets.Simulation.java
public Simulation(final JFrame aFrame, NetworkElement item) { super(aFrame); grn = ((DynamicalModelElement) item).getGeneNetwork(); plot = new Plot2DPanel(); //closing listener this.addWindowListener(new WindowAdapter() { @Override// w w w. j av a 2 s. c om public void windowClosing(WindowEvent windowEvent) { if (simulation != null && simulation.myThread_.isAlive()) { simulation.stop(); System.out.print("Simulation is canceled.\n"); JOptionPane.showMessageDialog(new Frame(), "Simulation is canceled.", "Warning!", JOptionPane.INFORMATION_MESSAGE); } escapeAction(); } }); // Model model_.setModel(new DefaultComboBoxModel(new String[] { "Deterministic Model (ODEs)", "Stochastic Model (SDEs)", "Stochastic Simulation (Gillespie Algorithm)" })); model_.setSelectedIndex(0); setModelAction(); //set plot part //display result if (grn.getTimeScale().size() >= 1) { //update parameters numTimeSeries_.setValue(grn.getTraj_itsValue()); tmax_.setValue(grn.getTraj_maxTime()); sdeDiffusionCoeff_.setValue(grn.getTraj_noise()); if (grn.getTraj_model().equals("ode")) model_.setSelectedIndex(0); else if (grn.getTraj_model().equals("sde")) model_.setSelectedIndex(1); else model_.setSelectedIndex(2); //update plot trajPlot.removeAll(); trajPlot.add(trajectoryTabb()); trajPlot.updateUI(); trajPlot.setVisible(true); trajPlot.repaint(); analyzeResult.setVisible(true); } /** * ACTIONS */ model_.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent arg0) { setModelAction(); } }); analyzeResult.addActionListener(new ActionListener() { public void actionPerformed(final ActionEvent arg0) { final JDialog a = new JDialog(); a.setSize(new Dimension(500, 450)); a.setModal(true); a.setTitle("Gene List (seperated by ';')"); a.setLocationRelativeTo(null); final JTextArea focusGenesArea = new JTextArea(); focusGenesArea.setLineWrap(true); focusGenesArea.setEditable(false); focusGenesArea.setRows(3); String geneNames = ""; for (int i = 0; i < grn.getNodes().size(); i++) geneNames += grn.getNodes().get(i).getLabel() + ";"; focusGenesArea.setText(geneNames); JButton submitButton = new JButton("Submit"); JButton cancelButton = new JButton("Cancel"); JPanel buttonPanel = new JPanel(); buttonPanel.setLayout(new BoxLayout(buttonPanel, BoxLayout.X_AXIS)); buttonPanel.add(submitButton); buttonPanel.add(cancelButton); cancelButton.addActionListener(new ActionListener() { public void actionPerformed(final ActionEvent arg0) { a.dispose(); } }); submitButton.addActionListener(new ActionListener() { public void actionPerformed(final ActionEvent arg0) { a.dispose(); final JDialog a = new JDialog(); a.setSize(new Dimension(500, 450)); a.setModal(true); a.setTitle("Statistics"); a.setLocationRelativeTo(null); if (grn.getTimeSeries().isEmpty()) { JOptionPane.showMessageDialog(new Frame(), "Please run the simulation first.", "Warning!", JOptionPane.INFORMATION_MESSAGE); } else { JPanel infoPanel = new JPanel(); infoPanel.setLayout(new BorderLayout()); //output String[] focusGenes = focusGenesArea.getText().split(";"); ; String content = ""; //discrete the final state int dimension = grn.getNodes().size(); //get gene index int[] focus_index = new int[focusGenes.length]; for (int j = 0; j < focusGenes.length; j++) for (int i = 0; i < dimension; i++) if (grn.getNode(i).getLabel().equals(focusGenes[j])) focus_index[j] = i; JScrollPane jsp = new JScrollPane(); //calculate steady states grn.setLand_itsValue((Integer) numTimeSeries_.getModel().getValue()); int[] isConverge = new int[grn.getTraj_itsValue()]; String out = calculateSteadyStates(focusGenes, focus_index, isConverge); //show the convergence final JDialog ifconvergent = new JDialog(); ifconvergent.setSize(new Dimension(500, 450)); ifconvergent.setModal(true); ifconvergent.setTitle("Convergence"); ifconvergent.setLocationRelativeTo(null); ConvergenceTable tablePanel = new ConvergenceTable(isConverge); JButton continueButton = new JButton("Click to check the attractors."); continueButton.addActionListener(new ActionListener() { public void actionPerformed(final ActionEvent arg0) { ifconvergent.dispose(); } }); JPanel ifconvergentPanel = new JPanel(); ifconvergentPanel.setLayout(new BorderLayout()); ifconvergentPanel.add(tablePanel, BorderLayout.NORTH); ifconvergentPanel.add(continueButton, BorderLayout.SOUTH); ifconvergent.add(ifconvergentPanel); ifconvergent.setVisible(true); //show attractors if (out.equals("ok")) { AttractorTable panel = new AttractorTable(grn, focusGenes); jsp.setViewportView(panel); } else if (grn.getSumPara().size() == 0) content += "Cannot find a steady state!"; else content += "\nI dont know why!"; if (content != "") { JLabel warningLabel = new JLabel(); warningLabel.setText(content); jsp.setViewportView(warningLabel); } grn.setSumPara(null); grn.setCounts(null); //jsp.setPreferredSize(new Dimension(280,130)); jsp.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED); jsp.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_AS_NEEDED); infoPanel.add(jsp, BorderLayout.CENTER); a.add(infoPanel); a.setVisible(true); } //end of else } }); JPanel options3 = new JPanel(); options3.setLayout(new BorderLayout()); options3.add(focusGenesArea, BorderLayout.NORTH); options3.add(buttonPanel); options3.setBorder(new EmptyBorder(5, 0, 5, 0)); a.add(options3); a.setVisible(true); } }); runButton_.addActionListener(new ActionListener() { public void actionPerformed(final ActionEvent arg0) { //System.out.print("Memory start: "+s_runtime.totalMemory()+"\n"); enterAction(); } }); cancelButton_.addActionListener(new ActionListener() { public void actionPerformed(final ActionEvent arg0) { if (simulation != null) simulation.stop(); System.out.print("Simulation is canceled!\n"); } }); fixButton.addActionListener(new ActionListener() { public void actionPerformed(final ActionEvent arg0) { JDialog a = new JDialog(); a.setTitle("Fixed initial values"); a.setSize(new Dimension(400, 400)); a.setLocationRelativeTo(null); JPanel speciesPanel = new JPanel(); String[] columnName = { "Name", "InitialValue" }; boolean editable = false; //false; new SpeciesTable(speciesPanel, columnName, grn, editable); /** LAYOUT **/ JPanel wholePanel = new JPanel(); wholePanel.setLayout(new BoxLayout(wholePanel, BoxLayout.Y_AXIS)); wholePanel.add(speciesPanel); a.add(wholePanel); a.setModal(true); a.setVisible(true); } }); randomButton.addActionListener(new ActionListener() { public void actionPerformed(final ActionEvent arg0) { final JDialog a = new JDialog(); a.setTitle("Set boundaries"); a.setSize(new Dimension(300, 200)); a.setModal(true); a.setLocationRelativeTo(null); JPanel upPanel = new JPanel(); JLabel upLabel = new JLabel("Input the upper boundary: "); final JTextField upValue = new JTextField("3"); upPanel.setLayout(new BoxLayout(upPanel, BoxLayout.X_AXIS)); upPanel.add(upLabel); upPanel.add(upValue); JPanel lowPanel = new JPanel(); JLabel lowLabel = new JLabel("Input the lower boundary: "); final JTextField lowValue = new JTextField("0"); lowPanel.setLayout(new BoxLayout(lowPanel, BoxLayout.X_AXIS)); lowPanel.add(lowLabel); lowPanel.add(lowValue); JPanel buttonPanel = new JPanel(); JButton submit = new JButton("Submit"); JButton cancel = new JButton("Cancel"); buttonPanel.setLayout(new BoxLayout(buttonPanel, BoxLayout.X_AXIS)); buttonPanel.add(submit); buttonPanel.add(cancel); buttonPanel.setBorder(new EmptyBorder(5, 5, 5, 5)); submit.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { if (upValue.getText().equals("")) JOptionPane.showMessageDialog(null, "Please input upper boundary", "Error", JOptionPane.ERROR_MESSAGE); else { try { upbound = Double.parseDouble(upValue.getText()); if (lowValue.getText().equals("")) JOptionPane.showMessageDialog(null, "Please input lower boundary", "Error", JOptionPane.ERROR_MESSAGE); else { try { lowbound = Double.parseDouble(lowValue.getText()); if (upbound < lowbound) JOptionPane.showMessageDialog(null, "Upper boundary should be not less than lower boundary", "Error", JOptionPane.ERROR_MESSAGE); else a.dispose(); } catch (Exception er) { JOptionPane.showMessageDialog(null, "Invalid value", "Error", JOptionPane.INFORMATION_MESSAGE); MsgManager.Messages.errorMessage(er, "Error", ""); } } } catch (Exception er) { JOptionPane.showMessageDialog(null, "Invalid value", "Error", JOptionPane.INFORMATION_MESSAGE); MsgManager.Messages.errorMessage(er, "Error", ""); } } } }); cancel.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { JOptionPane.showMessageDialog(null, "The default values are used!", "", JOptionPane.INFORMATION_MESSAGE); a.dispose(); } }); JPanel wholePanel = new JPanel(); wholePanel.setLayout(new BoxLayout(wholePanel, BoxLayout.Y_AXIS)); wholePanel.add(upPanel); wholePanel.add(lowPanel); wholePanel.add(buttonPanel); wholePanel.setBorder(new EmptyBorder(5, 5, 5, 5)); a.add(wholePanel); a.setVisible(true); } }); }