Java tutorial
//@formatter:off /* programm: SubmatixSPXLog purpose: configuration and read logs from SUBMATIX SPX42 divecomputer via Bluethooth Copyright (C) 2012 Dirk Marciniak This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/ */ //@formatter:on package de.dmarcini.submatix.pclogger.gui; import java.awt.BorderLayout; import java.awt.Color; import java.awt.Dimension; import java.awt.Font; import java.awt.Insets; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.MouseMotionListener; import java.util.Enumeration; import java.util.MissingResourceException; import java.util.Vector; import javax.swing.GroupLayout; import javax.swing.GroupLayout.Alignment; import javax.swing.ImageIcon; import javax.swing.JButton; import javax.swing.JComboBox; import javax.swing.JLabel; import javax.swing.JOptionPane; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.JTable; import javax.swing.LayoutStyle.ComponentPlacement; import javax.swing.ListSelectionModel; import javax.swing.SwingConstants; import javax.swing.event.ListSelectionEvent; import javax.swing.event.ListSelectionListener; import javax.swing.table.DefaultTableCellRenderer; import javax.swing.table.TableColumn; import javax.xml.parsers.ParserConfigurationException; import javax.xml.transform.TransformerException; import javax.xml.transform.TransformerFactoryConfigurationError; import org.apache.log4j.Logger; import org.joda.time.DateTime; import de.dmarcini.submatix.pclogger.lang.LangStrings; import de.dmarcini.submatix.pclogger.utils.DeviceComboBoxModel; import de.dmarcini.submatix.pclogger.utils.FileManagerTableModel; import de.dmarcini.submatix.pclogger.utils.LogDerbyDatabaseUtil; import de.dmarcini.submatix.pclogger.utils.SpxPcloggerProgramConfig; import de.dmarcini.submatix.pclogger.utils.UDDFFileCreateClass; /** * Panel zum Managen der Logfiles * * @author Dirk Marciniak 22.08.2013 */ public class spx42FileManagerPanel extends JPanel implements ActionListener, ListSelectionListener { /** * */ private static final long serialVersionUID = 2149212648166152026L; private final Logger lg; private String device; private final LogDerbyDatabaseUtil dbUtil; private final MouseMotionListener mListener; private JTable dataViewTable; private JComboBox<String> deviceComboBox; private JButton cancelButton; private JButton deleteButton; private JButton exportButton; private JLabel tipLabel; /** * Der Konstruktor des Dateimanager-Panels erstellt: 22.08.2013 * * @param mListener * @param sqliteDbUtil */ public spx42FileManagerPanel(MouseMotionListener mListener, LogDerbyDatabaseUtil sqliteDbUtil) { this.lg = SpxPcloggerProgramConfig.LOGGER; this.dbUtil = sqliteDbUtil; this.mListener = mListener; initPanel(); } @Override public void actionPerformed(ActionEvent ev) { String cmd = ev.getActionCommand(); // //////////////////////////////////////////////////////////////////////// // Kommando wechsle das Gert zur Anzeige if (cmd.equals("change_device_to_display")) { // wenn das eine ComboBox ist if (ev.getSource() instanceof JComboBox<?>) { // ist das die DeviceBox? JComboBox<?> theBox = (JComboBox<?>) ev.getSource(); if (theBox.equals(deviceComboBox)) { releaseLists(); // ist was ausgewhlt? if (deviceComboBox.getSelectedIndex() != -1) { String connDev = ((DeviceComboBoxModel) deviceComboBox.getModel()) .getDeviceSerialAt(deviceComboBox.getSelectedIndex()); if (connDev != null) { fillDiveTable(connDev); } } } } } else if (cmd.equals("cancel_selection")) { dataViewTable.clearSelection(); } else if (cmd.equals("delete_selection")) { int result = showAskBox(LangStrings.getString("fileManagerPanel.showAskBox.message")); if (result == 1) { lg.info("DELETE DATASETS!"); int[] sets = dataViewTable.getSelectedRows(); deleteDatasetsForIdx(sets); // merke mir das ausgewhlte Teilchen int selectedIndex = deviceComboBox.getSelectedIndex(); deviceComboBox.setSelectedIndex(-1); // wenn da eine Auswahl war, wieder setzen und dann wird die Box auch neu befllt if (selectedIndex != -1) { deviceComboBox.setSelectedIndex(selectedIndex); } } else { lg.debug("abort deleting..."); } } else if (cmd.equals("export_selection")) { lg.debug("export selected dives to file"); int[] sets = dataViewTable.getSelectedRows(); exportDatasetsForIdx(sets); dataViewTable.clearSelection(); } else { lg.warn("unknown action command!"); } } /** * Aus den Indizi der Tabelle die DBID erfragen Project: SubmatixBTForPC Package: de.dmarcini.submatix.pclogger.gui * * @author Dirk Marciniak (dirk_marciniak@arcor.de) Stand: 28.08.2012 * @param sets * @return set datenbankID's */ private int[] getDbIdsForTableIdx(int[] sets) { // Sets lesen, Array fr DatenbankID erzeugen int[] dbIds = new int[sets.length]; FileManagerTableModel tm = (FileManagerTableModel) dataViewTable.getModel(); for (int setNumber = 0; setNumber < sets.length; setNumber++) { int dataSet = tm.getDbIdAt(sets[setNumber]); lg.info(String.format("DBID: <%d>, setNumber: <%d>", dataSet, setNumber)); // datenbankid zufgen dbIds[setNumber] = dataSet; } return (dbIds); } /** * exportiere alle selektierten Tauchgnge in je eine Datei als UDDF 2.2 Project: SubmatixBTForPC Package: de.dmarcini.submatix.pclogger.gui * * @author Dirk Marciniak (dirk_marciniak@arcor.de) Stand: 28.08.2012 * @param sets */ private void exportDatasetsForIdx(int[] sets) { UDDFFileCreateClass uddf = null; PleaseWaitDialog wDial = null; // if (sets.length == 0) return; if (device == null) { lg.error("no device known in programobject! abort function!"); } if (!SpxPcloggerProgramConfig.exportDir.exists()) { if (!SpxPcloggerProgramConfig.exportDir.mkdirs()) { lg.error("cant create export directory!"); return; } } if (!SpxPcloggerProgramConfig.exportDir.isDirectory()) { lg.error("export directory <" + SpxPcloggerProgramConfig.exportDir.getAbsolutePath() + "> is NOT a directory!"); return; } // // versuche ein Transformobjekt fr uddf zu erzeugen // try { uddf = new UDDFFileCreateClass(dbUtil); } catch (ParserConfigurationException ex) { lg.error(ex.getLocalizedMessage()); return; } catch (TransformerException ex) { lg.error(ex.getLocalizedMessage()); return; } catch (TransformerFactoryConfigurationError ex) { lg.error(ex.getLocalizedMessage()); return; } catch (Exception ex) { lg.error(ex.getLocalizedMessage()); return; } // // Sets lesen, Array fr DatenbankID erzeugen // int[] dbIds = getDbIdsForTableIdx(sets); if (dbIds.length == 0) { lg.error("no database id's for export!"); return; } try { if (dbIds.length == 1) { lg.info("export to dir: <" + SpxPcloggerProgramConfig.exportDir.getAbsolutePath() + ">"); uddf.createXML(SpxPcloggerProgramConfig.exportDir, dbIds[0]); } else { // knnte dauern, Dialog machen wDial = new PleaseWaitDialog(LangStrings.getString("PleaseWaitDialog.title"), LangStrings.getString("PleaseWaitDialog.exportDive")); wDial.setMax(100); wDial.resetProgress(); wDial.setVisible(true); lg.info("export to dir: <" + SpxPcloggerProgramConfig.exportDir.getAbsolutePath() + ">"); uddf.createXML(SpxPcloggerProgramConfig.exportDir, dbIds); // wDial.setVisible( false ); showSuccessBox(LangStrings.getString("fileManagerPanel.succesExport")); } } catch (Exception ex) { lg.error(ex.getLocalizedMessage()); showWarnBox(LangStrings.getString("fileManagerPanel.notSuccesExport")); return; } finally { if (wDial != null) { wDial.setVisible(false); wDial.dispose(); wDial = null; } } } /** * Aus der Database Tauchgnge lschen Project: SubmatixBTForPC Package: de.dmarcini.submatix.pclogger.gui * * @author Dirk Marciniak (dirk_marciniak@arcor.de) Stand: 16.08.2012 * @param sets */ private void deleteDatasetsForIdx(int[] sets) { if (device == null) { lg.error("no device known in programobject! abort function!"); return; } // Sets lesen, Array fr DatenbankID erzeugen int[] dbIds = getDbIdsForTableIdx(sets); // // so, jetzt sollte ich die ID haben, lschen angehen // dbUtil.deleteAllSetsForIdsLog(dbIds); } private void fillDiveTable(String cDevice) { DateTime dateTime; long javaTime; int row = 0; int dbId = -1; // device = cDevice; if (device != null) { lg.debug("search dive list for device <" + device + ">..."); // Eine Liste der Dives lesen lg.debug("read dive list for device from DB..."); Vector<String[]> entrys = dbUtil.getDiveListForDeviceLog(device); if (entrys.size() < 1) { lg.info("no dives for device <" + device + "/" + dbUtil.getAliasForNameConn(device) + "> found in DB."); return; } // // Objekt fr das Modell erstellen // [0] DIVENUMBERONSPX // [1] Start Datum und Zeiten localisiert // [2] Max Tiefe // [3] Lnge // [4] DBID (ab 04 zeigt die Tabelle mit dem Tabellenmodell DiveExportTableModel nix mehr an!) String[][] diveEntrys = new String[entrys.size()][5]; // die erfragten details zurechtrcken for (Enumeration<String[]> enu = entrys.elements(); enu.hasMoreElements();) { // Felder sind: // [0] H_DIVEID, // [1] H_H_DIVENUMBERONSPX // [2] H_STARTTIME als unix timestamp String[] origSet = enu.nextElement(); // zusammenbauen fuer Anzeige // SPX-DiveNumber fr vierstellige Anzeige diveEntrys[row][1] = String.format("%4s", origSet[1]); // Die UTC-Zeit als ASCII/UNIX wieder zu der originalen Zeit fr Java zusammenbauen try { // Die Tauchgangszeit formatieren javaTime = Long.parseLong(origSet[2]) * 1000; dbId = Integer.parseInt(origSet[0]); dateTime = new DateTime(javaTime); diveEntrys[row][4] = origSet[0]; diveEntrys[row][0] = origSet[1]; diveEntrys[row][1] = dateTime .toString(LangStrings.getString("MainCommGUI.timeFormatterString")); // jetzt will ich alle Kopfdaten, die gespeichert sind // [0] H_DIVEID, // [1] H_DIVENUMBERONSPX, // [2] H_FILEONSPX, // [3] H_DEVICEID, // [4] H_STARTTIME, // [5] H_HADSEND, // [6] H_FIRSTTEMP, // [7] H_LOWTEMP, // [8] H_MAXDEPTH, // [9] H_SAMPLES, // [10] H_DIVELENGTH, // [11] H_UNITS, String[] headers = dbUtil.getHeadDiveDataFromIdAsSTringLog(dbId); if (headers[11].equals("METRIC")) { diveEntrys[row][2] = headers[8] + " m"; } else { diveEntrys[row][2] = headers[8] + " ft"; } diveEntrys[row][3] = headers[10] + " min"; } catch (NumberFormatException ex) { lg.error("Number format exception (value=<" + origSet[1] + ">: <" + ex.getLocalizedMessage() + ">"); diveEntrys[row][0] = "error"; } finally { row++; } } // aufrumen entrys.clear(); entrys = null; // die Tabelle initialisieren String[] title = new String[5]; title[0] = LangStrings.getString("fileManagerPanel.diveListHeaders.numberOnSpx"); title[1] = LangStrings.getString("fileManagerPanel.diveListHeaders.startTime"); title[2] = LangStrings.getString("fileManagerPanel.diveListHeaders.maxDepth"); title[3] = LangStrings.getString("fileManagerPanel.diveListHeaders.diveLen"); title[4] = LangStrings.getString("fileManagerPanel.diveListHeaders.dbId"); FileManagerTableModel mTable = new FileManagerTableModel(diveEntrys, title); dataViewTable.setModel(mTable); // jetzt noch die rechte Spalte verschnern. Rechtsbndig und schmal bitte! DefaultTableCellRenderer rightRenderer = new DefaultTableCellRenderer(); rightRenderer.setHorizontalAlignment(JLabel.RIGHT); TableColumn column = dataViewTable.getColumnModel().getColumn(0); column.setPreferredWidth(60); column.setMaxWidth(120); column.setCellRenderer(rightRenderer); } else { lg.debug("no device found...."); } } /** * Fenster vorbereiten Project: SubmatixBTForPC Package: de.dmarcini.submatix.pclogger.gui * * @author Dirk Marciniak (dirk_marciniak@arcor.de) Stand: 13.08.2012 * @param connDev * @throws Exception */ public void initData(String connDev) throws Exception { Vector<String[]> entrys; // // entsorge fr alle Flle das Zeug von vorher // deviceComboBox.removeActionListener(this); releaseLists(); if (connDev == null) { lg.debug("init export objects whitout active Device"); } else { lg.debug("init export objects Device <" + connDev + ">..."); } // // Ist berhaupt eine Datenbank zum Auslesen vorhanden? // if (dbUtil == null || (!dbUtil.isOpenDB())) { throw new Exception("no database object initiated!"); } // // Lese eine Liste der Gerte/Aliase // entrys = dbUtil.getAliasDataConn(); if (entrys == null) { lg.warn("no devices found in database."); showWarnBox(LangStrings.getString("spx42LogGraphPanel.warnBox.noDevicesInDatabase")); return; } // // flle deviceComboBox // DeviceComboBoxModel portBoxModel = new DeviceComboBoxModel(entrys); deviceComboBox.setModel(portBoxModel); if (entrys.isEmpty()) { // sind keine Gerte verbunden, nix selektieren deviceComboBox.setSelectedIndex(-1); } else { // Alle Eintrge testen int index = 0; for (String[] entr : entrys) { if (entr[0].equals(connDev)) { deviceComboBox.setSelectedIndex(index); lg.debug("device found and set as index fr combobox..."); break; } index++; } } // // gibt es einen Eintrag in der Combobox mte ja deren entsprechende Liste von // Eintrgen gelesen werden.... // if (deviceComboBox.getSelectedIndex() != -1) { connDev = ((DeviceComboBoxModel) deviceComboBox.getModel()) .getDeviceSerialAt(deviceComboBox.getSelectedIndex()); if (connDev != null) { fillDiveTable(connDev); } } deviceComboBox.addActionListener(this); } private void initPanel() { setPreferredSize(new Dimension(796, 504)); setLayout(new BorderLayout(0, 0)); JPanel topComboBoxPanel = new JPanel(); topComboBoxPanel.setPreferredSize(new Dimension(10, 40)); add(topComboBoxPanel, BorderLayout.NORTH); deviceComboBox = new JComboBox<String>(); deviceComboBox.setMaximumRowCount(26); deviceComboBox.setFont(new Font("Dialog", Font.PLAIN, 12)); deviceComboBox.setActionCommand("change_device_to_display"); deviceComboBox.addMouseMotionListener(mListener); tipLabel = new JLabel(LangStrings.getString("fileManagerPanel.tipLabel.text")); //$NON-NLS-1$ tipLabel.setHorizontalAlignment(SwingConstants.CENTER); tipLabel.setForeground(new Color(105, 105, 105)); tipLabel.setFont(new Font("Tahoma", Font.ITALIC, 11)); GroupLayout gl_topComboBoxPanel = new GroupLayout(topComboBoxPanel); gl_topComboBoxPanel.setHorizontalGroup(gl_topComboBoxPanel.createParallelGroup(Alignment.LEADING) .addGroup(gl_topComboBoxPanel.createSequentialGroup().addGap(36) .addComponent(deviceComboBox, GroupLayout.PREFERRED_SIZE, 277, GroupLayout.PREFERRED_SIZE) .addGap(18) .addComponent(tipLabel, GroupLayout.PREFERRED_SIZE, 423, GroupLayout.PREFERRED_SIZE) .addGap(42))); gl_topComboBoxPanel.setVerticalGroup(gl_topComboBoxPanel.createParallelGroup(Alignment.LEADING) .addGroup(gl_topComboBoxPanel.createSequentialGroup().addGap(5).addComponent(deviceComboBox, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)) .addGroup(Alignment.TRAILING, gl_topComboBoxPanel.createSequentialGroup() .addContainerGap(26, Short.MAX_VALUE).addComponent(tipLabel))); topComboBoxPanel.setLayout(gl_topComboBoxPanel); JPanel bottomButtonPanel = new JPanel(); bottomButtonPanel.setPreferredSize(new Dimension(10, 60)); add(bottomButtonPanel, BorderLayout.SOUTH); cancelButton = new JButton(LangStrings.getString("fileManagerPanel.cancelButton.text")); //$NON-NLS-1$ cancelButton.setHorizontalAlignment(SwingConstants.LEFT); cancelButton.setIconTextGap(15); cancelButton.setIcon(new ImageIcon( spx42FileManagerPanel.class.getResource("/de/dmarcini/submatix/pclogger/res/quit.png"))); cancelButton.setEnabled(false); cancelButton.setPreferredSize(new Dimension(180, 40)); cancelButton.setMaximumSize(new Dimension(160, 40)); cancelButton.setMargin(new Insets(2, 30, 2, 30)); cancelButton.setForeground(new Color(0, 100, 0)); cancelButton.setBackground(new Color(152, 251, 152)); cancelButton.setActionCommand("cancel_selection"); cancelButton.addMouseMotionListener(mListener); cancelButton.addActionListener(this); deleteButton = new JButton(LangStrings.getString("fileManagerPanel.deleteButton.text")); //$NON-NLS-1$ deleteButton.setHorizontalAlignment(SwingConstants.LEFT); deleteButton.setIconTextGap(15); deleteButton.setIcon(new ImageIcon( spx42FileManagerPanel.class.getResource("/de/dmarcini/submatix/pclogger/res/36.png"))); deleteButton.setFont(new Font("Tahoma", Font.BOLD, 12)); deleteButton.setEnabled(false); deleteButton.setPreferredSize(new Dimension(180, 40)); deleteButton.setMaximumSize(new Dimension(160, 40)); deleteButton.setMargin(new Insets(2, 30, 2, 30)); deleteButton.setForeground(Color.RED); deleteButton.setBackground(new Color(255, 192, 203)); deleteButton.setActionCommand("delete_selection"); deleteButton.addMouseMotionListener(mListener); deleteButton.addActionListener(this); exportButton = new JButton(LangStrings.getString("fileManagerPanel.exportButton.text")); //$NON-NLS-1$ exportButton.setHorizontalAlignment(SwingConstants.LEFT); exportButton.setIconTextGap(15); exportButton.setIcon(new ImageIcon( spx42FileManagerPanel.class.getResource("/de/dmarcini/submatix/pclogger/res/Download.png"))); exportButton.setPreferredSize(new Dimension(180, 40)); exportButton.setMaximumSize(new Dimension(160, 40)); exportButton.setMargin(new Insets(2, 30, 2, 30)); exportButton.setForeground(new Color(0, 0, 205)); exportButton.setEnabled(false); exportButton.setBackground(new Color(0, 255, 255)); exportButton.setActionCommand("export_selection"); exportButton.addMouseMotionListener(mListener); exportButton.addActionListener(this); GroupLayout gl_bottomButtonPanel = new GroupLayout(bottomButtonPanel); gl_bottomButtonPanel.setHorizontalGroup(gl_bottomButtonPanel.createParallelGroup(Alignment.LEADING) .addGroup(gl_bottomButtonPanel.createSequentialGroup().addGap(36) .addComponent(cancelButton, GroupLayout.PREFERRED_SIZE, 191, GroupLayout.PREFERRED_SIZE) .addPreferredGap(ComponentPlacement.UNRELATED) .addComponent(deleteButton, GroupLayout.PREFERRED_SIZE, 199, GroupLayout.PREFERRED_SIZE) .addPreferredGap(ComponentPlacement.RELATED, 127, Short.MAX_VALUE) .addComponent(exportButton, GroupLayout.PREFERRED_SIZE, 191, GroupLayout.PREFERRED_SIZE) .addGap(42))); gl_bottomButtonPanel.setVerticalGroup(gl_bottomButtonPanel.createParallelGroup(Alignment.LEADING) .addGroup(gl_bottomButtonPanel.createSequentialGroup() .addContainerGap(GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addGroup(gl_bottomButtonPanel.createParallelGroup(Alignment.BASELINE) .addComponent(cancelButton, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE) .addComponent(deleteButton, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE) .addComponent(exportButton, GroupLayout.PREFERRED_SIZE, 40, GroupLayout.PREFERRED_SIZE)) .addGap(20))); bottomButtonPanel.setLayout(gl_bottomButtonPanel); JPanel dataListPanel = new JPanel(); add(dataListPanel, BorderLayout.CENTER); JScrollPane contentScrollPane = new JScrollPane(); GroupLayout gl_dataListPanel = new GroupLayout(dataListPanel); gl_dataListPanel.setHorizontalGroup(gl_dataListPanel.createParallelGroup(Alignment.LEADING) .addGroup(gl_dataListPanel .createSequentialGroup().addGap(35).addComponent(contentScrollPane, GroupLayout.PREFERRED_SIZE, 720, GroupLayout.PREFERRED_SIZE) .addContainerGap(41, Short.MAX_VALUE))); gl_dataListPanel .setVerticalGroup(gl_dataListPanel.createParallelGroup(Alignment.TRAILING) .addGroup(Alignment.LEADING, gl_dataListPanel.createSequentialGroup().addContainerGap() .addComponent(contentScrollPane, GroupLayout.DEFAULT_SIZE, 402, Short.MAX_VALUE) .addContainerGap())); dataViewTable = new JTable(); tipLabel.setLabelFor(dataViewTable); dataViewTable.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION); dataViewTable.getSelectionModel().addListSelectionListener(this); dataViewTable.addMouseMotionListener(mListener); contentScrollPane.setViewportView(dataViewTable); JLabel lblNewLabel = new JLabel("DATALABEL"); contentScrollPane.setColumnHeaderView(lblNewLabel); dataListPanel.setLayout(gl_dataListPanel); } /** * Tabelle leeren Project: SubmatixBTForPC Package: de.dmarcini.submatix.pclogger.gui * * @author Dirk Marciniak (dirk_marciniak@arcor.de) Stand: 13.08.2012 */ private void releaseLists() { dataViewTable.setModel(new FileManagerTableModel(null, null)); deleteButton.setEnabled(false); cancelButton.setEnabled(false); } /** * Sprachtexte einstellen Project: SubmatixBTForPC Package: de.dmarcini.submatix.pclogger.gui * * @author Dirk Marciniak (dirk_marciniak@arcor.de) Stand: 13.08.2012 * @param stringsBundle * @return ok oder nicht */ public int setLanguageStrings() { int selectedIndex; // try { // merke mir das ausgewhlte Teilchen selectedIndex = deviceComboBox.getSelectedIndex(); // Sprache richten deviceComboBox.setToolTipText(LangStrings.getString("fileManagerPanel.deviceComboBox.tooltiptext")); dataViewTable.setToolTipText(LangStrings.getString("fileManagerPanel.dataViewTable.tooltiptext")); cancelButton.setText(LangStrings.getString("fileManagerPanel.cancelButton.text")); cancelButton.setToolTipText(LangStrings.getString("fileManagerPanel.cancelButton.tooltiptext")); deleteButton.setText(LangStrings.getString("fileManagerPanel.deleteButton.text")); deleteButton.setToolTipText(LangStrings.getString("fileManagerPanel.deleteButton.tooltiptext")); exportButton.setText(LangStrings.getString("fileManagerPanel.exportButton.text")); exportButton.setToolTipText(LangStrings.getString("fileManagerPanel.exportButton.tooltiptext")); tipLabel.setText(LangStrings.getString("fileManagerPanel.tipLabel.text")); // jetzt die Box neu befllen, mit Trick 17... releaseLists(); deviceComboBox.setSelectedIndex(-1); // wenn da eine Auswahl war, wieder setzen und dann wird die Box auch neu befllt if (selectedIndex != -1) { deviceComboBox.setSelectedIndex(selectedIndex); } } catch (NullPointerException ex) { System.out.println("ERROR set language strings <" + ex.getMessage() + "> ABORT!"); return (-1); } catch (MissingResourceException ex) { System.out.println( "ERROR set language strings - the given key can be found <" + ex.getMessage() + "> ABORT!"); return (0); } catch (ClassCastException ex) { System.out.println("ERROR set language strings <" + ex.getMessage() + "> ABORT!"); return (0); } return (1); } private int showAskBox(String msg) { try { Object[] options = { LangStrings.getString("fileManagerPanel.showAskBox.no"), LangStrings.getString("fileManagerPanel.showAskBox.yes") }; return JOptionPane.showOptionDialog(this, msg, LangStrings.getString("fileManagerPanel.showAskBox.headline"), JOptionPane.OK_CANCEL_OPTION, JOptionPane.QUESTION_MESSAGE, null, options, options[1]); } catch (NullPointerException ex) { lg.error("ERROR showAskBox <" + ex.getMessage() + "> ABORT!"); return JOptionPane.CANCEL_OPTION; } catch (MissingResourceException ex) { lg.error("ERROR showAskBox <" + ex.getMessage() + "> ABORT!"); return JOptionPane.CANCEL_OPTION; } catch (ClassCastException ex) { lg.error("ERROR showAskBox <" + ex.getMessage() + "> ABORT!"); return JOptionPane.CANCEL_OPTION; } } /** * Zeige eine Warnung an! Project: SubmatixBTForPC Package: de.dmarcini.submatix.pclogger.gui * * @author Dirk Marciniak (dirk_marciniak@arcor.de) Stand: 30.08.2012 * @param msg */ private void showWarnBox(String msg) { ImageIcon icon = null; try { icon = new ImageIcon(MainCommGUI.class.getResource("/de/dmarcini/submatix/pclogger/res/Abort.png")); JOptionPane.showMessageDialog(this, msg, LangStrings.getString("MainCommGUI.warnDialog.headline"), JOptionPane.WARNING_MESSAGE, icon); } catch (NullPointerException ex) { lg.error("ERROR showWarnDialog <" + ex.getMessage() + "> ABORT!"); return; } catch (MissingResourceException ex) { lg.error("ERROR showWarnDialog <" + ex.getMessage() + "> ABORT!"); return; } catch (ClassCastException ex) { lg.error("ERROR showWarnDialog <" + ex.getMessage() + "> ABORT!"); return; } } /** * ERfolgreich beendet-Box Project: SubmatixBTForPC Package: de.dmarcini.submatix.pclogger.gui * * @author Dirk Marciniak (dirk_marciniak@arcor.de) Stand: 30.08.2012 * @param msg */ private void showSuccessBox(String msg) { ImageIcon icon = null; try { icon = new ImageIcon(MainCommGUI.class.getResource("/de/dmarcini/submatix/pclogger/res/94.png")); JOptionPane.showMessageDialog(this, msg, LangStrings.getString("MainCommGUI.successDialog.headline"), JOptionPane.OK_OPTION, icon); } catch (NullPointerException ex) { lg.error("ERROR showWarnDialog <" + ex.getMessage() + "> ABORT!"); return; } catch (MissingResourceException ex) { lg.error("ERROR showWarnDialog <" + ex.getMessage() + "> ABORT!"); return; } catch (ClassCastException ex) { lg.error("ERROR showWarnDialog <" + ex.getMessage() + "> ABORT!"); return; } } @Override public void valueChanged(ListSelectionEvent ev) { if (!ev.getValueIsAdjusting()) { // es haben sich selektierte Spalten gendert? lg.debug("selected Rows changed...."); // es war meine Datentabelle if (dataViewTable.getSelectedRowCount() > 0) { lg.debug(String.format("selected Rows <%02d>....", dataViewTable.getSelectedRowCount())); deleteButton.setEnabled(true); cancelButton.setEnabled(true); exportButton.setEnabled(true); } else { lg.debug("NO selected Rows...."); deleteButton.setEnabled(false); cancelButton.setEnabled(false); exportButton.setEnabled(false); } } else { lg.debug("selected Rows changing in progress...."); } } }