/* * MediathekView * Copyright (C) 2008 W. Xaver * W.Xaver[at]googlemail.com * http://zdfmediathk.sourceforge.net/ * * 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 * 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/>. */ package mediathek.gui.dialogEinstellungen; import javafx.beans.Observable; import javafx.collections.ObservableList; import mSearch.tool.Log; import mSearch.tool.SysMsg; import mediathek.config.Daten; import mediathek.config.MVConfig; import mediathek.gui.PanelVorlage; import javax.swing.*; import javax.swing.text.DefaultCaret; import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; @SuppressWarnings("serial") public class PanelMeldungen extends PanelVorlage { private final int logArt; private int firstScroll = 25; private static final Color cGruen = new Color(0, 153, 51); private static final Color cRot = new Color(255, 0, 0); public PanelMeldungen(Daten d, JFrame parentComponent, int logArt, String header) { super(d, parentComponent); initComponents(); jLabelHeader.setText(header); this.logArt = logArt; ObservableList<String> text; if (logArt == SysMsg.LOG_SYSTEM) { text = SysMsg.textSystem; jCheckBoxAuto.setSelected(true); } else { text = SysMsg.textProgramm; jCheckBoxAuto.setSelected(false); } jCheckBoxAuto.setForeground(jCheckBoxAuto.isSelected() ? cGruen : cRot); jButtonLoeschen.addActionListener(new BeobLoeschen()); jCheckBoxAuto.addActionListener((ActionEvent e) -> { jCheckBoxAuto.setForeground(jCheckBoxAuto.isSelected() ? cGruen : cRot); setAuto(); }); jCheckBoxUmbrechen.addActionListener((ActionEvent e) -> { if (!stopBeob) { MVConfig.add(getNrSystem(), String.valueOf(jCheckBoxUmbrechen.isSelected())); setLineWrab(); } }); setAuto(); setLineWrab(); text.addListener((Observable ll) -> { try { if (SwingUtilities.isEventDispatchThread()) { notifyPanel(); } else { SwingUtilities.invokeLater(PanelMeldungen.this::notifyPanel); } } catch (Exception ex) { Log.errorLog(912365478, ex); } }); } public void notifyPanel() { if (jCheckBoxAuto.isSelected() || firstScroll > 0) { if (firstScroll > 0) { --firstScroll; } setLineWrab(); //setText wir da auch gemacht } } private void setAuto() { if (jCheckBoxAuto.isSelected()) { DefaultCaret caret = (DefaultCaret) jTextArea.getCaret(); caret.setUpdatePolicy(DefaultCaret.ALWAYS_UPDATE); } else { DefaultCaret caret = (DefaultCaret) jTextArea.getCaret(); caret.setUpdatePolicy(DefaultCaret.NEVER_UPDATE); } } private void setLineWrab() { stopBeob = true; jCheckBoxUmbrechen.setSelected(Boolean.parseBoolean(MVConfig.get(getNrSystem()))); jTextArea.setLineWrap(jCheckBoxUmbrechen.isSelected()); jTextArea.setWrapStyleWord(false); setText(); stopBeob = false; } private MVConfig.Configs getNrSystem() { MVConfig.Configs nr = MVConfig.Configs.SYSTEM_MEDUNGSFENSTER_UMBRECHEN_SYSTEMMELDUNGEN; switch (logArt) { case SysMsg.LOG_SYSTEM: nr = MVConfig.Configs.SYSTEM_MEDUNGSFENSTER_UMBRECHEN_SYSTEMMELDUNGEN; break; case SysMsg.LOG_PLAYER: nr = MVConfig.Configs.SYSTEM_MEDUNGSFENSTER_UMBRECHEN_PLAYERMELDUNGEN; break; } return nr; } private synchronized void setText() { jTextArea.setText(SysMsg.getText(logArt)); } // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents private void initComponents() { jButtonLoeschen = new javax.swing.JButton(); javax.swing.JScrollPane jScrollPane = new javax.swing.JScrollPane(); jTextArea = new javax.swing.JTextArea(); jLabelHeader = new javax.swing.JLabel(); jCheckBoxAuto = new javax.swing.JCheckBox(); jCheckBoxUmbrechen = new javax.swing.JCheckBox(); jButtonLoeschen.setText("Löschen"); jTextArea.setEditable(false); jTextArea.setColumns(20); jTextArea.setRows(5); jScrollPane.setViewportView(jTextArea); jLabelHeader.setText("jLabel1"); jCheckBoxAuto.setSelected(true); jCheckBoxAuto.setText("Autoscroll"); jCheckBoxUmbrechen.setText("Zeilen umbrechen"); javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this); this.setLayout(layout); layout.setHorizontalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(layout.createSequentialGroup() .addContainerGap() .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(jScrollPane, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, 429, Short.MAX_VALUE) .addGroup(layout.createSequentialGroup() .addComponent(jLabelHeader) .addGap(0, 0, Short.MAX_VALUE)) .addGroup(layout.createSequentialGroup() .addComponent(jCheckBoxAuto) .addGap(18, 18, 18) .addComponent(jCheckBoxUmbrechen) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 69, Short.MAX_VALUE) .addComponent(jButtonLoeschen))) .addContainerGap()) ); layout.setVerticalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup() .addContainerGap() .addComponent(jLabelHeader) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) .addComponent(jScrollPane, javax.swing.GroupLayout.DEFAULT_SIZE, 328, Short.MAX_VALUE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.CENTER) .addComponent(jCheckBoxAuto) .addComponent(jCheckBoxUmbrechen) .addComponent(jButtonLoeschen)) .addContainerGap()) ); }// </editor-fold>//GEN-END:initComponents // Variables declaration - do not modify//GEN-BEGIN:variables private javax.swing.JButton jButtonLoeschen; private javax.swing.JCheckBox jCheckBoxAuto; private javax.swing.JCheckBox jCheckBoxUmbrechen; private javax.swing.JLabel jLabelHeader; private javax.swing.JTextArea jTextArea; // End of variables declaration//GEN-END:variables private class BeobLoeschen implements ActionListener { @Override public void actionPerformed(ActionEvent arg0) { SysMsg.clearText(logArt); setText(); } } }