kennt ihr das nicht... ihr arbeitet angestrengt am PC, tackatackatackatackatackatacka klappern die Tasten und plötzlich erscheint irgend ein Fenster und ist auch gleich wieder weg weil ihr keine Zeit zum reagieren hattet und zufällig kurz danach die Enter oder ESC-Taste gedrückt habt?
Mir passierte das täglich. Mehrmals. Sogar mit der Maus hab ich es schon mal versehentlich weggeklickt.
Deshalb hab ich mir mal ein paar Stunden Zeit genommen (ich hab ja keine Ahnung von Java) und ein paar Zeilen Code zusammen kopiert um das Problem irgendwie zu lösen.
Mit dem folgenden Patch wird in den Einstellungen des Erinnerungs-Plugins ein neuer Wert hinzugefügt (unter "Sonstige Einstellungen" -> "Zehntel-Sekunden..." steht dahinter).
Da muss man noch nachbessern, weil ich mich mit dem Layout nicht auskenne.
Dieser Wert bestimmt die Zeit in der das Erinnerungsfenster nicht auf Tastatur und Maus reagiert.
Ist der Wert 0 (der Standardwert) verhält sich die Erinnerung wie bisher.
Ein Wert > 0 sperrt für die angegebene Zeit das Erinnerungsfenster für alle Tastatur und Mauseingaben.
Nur ALT+F4 schließt noch das Erinnerungsfenster.
Code: Alles auswählen
--- tvbrowser-3.4.1.0_ORI/src/tvbrowser/extras/reminderplugin/ReminderFrame.java Wed Dec 24 11:01:00 2014
+++ tvbrowser-3.4.1.0_MOD/src/tvbrowser/extras/reminderplugin/ReminderFrame.java Sun Sep 06 18:39:38 2015
@@ -32,6 +32,8 @@
import java.awt.Window;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
+import java.awt.event.KeyEvent; // Reminder alarm, Mouse and Keyboard delay
+import java.awt.event.KeyListener; // Reminder alarm, Mouse and Keyboard delay
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.awt.event.WindowFocusListener;
@@ -136,6 +138,10 @@
private Timer mAutoCloseTimer;
private int mRemainingSecs;
+ // Reminder alarm, Mouse and Keyboard delay
+ private Timer mMouseAndKeyboardTimer;
+ private KeyListener mDelayKeyListener;
+
/**
* automatically close when current time is larger than this point in time
*/
@@ -368,6 +374,54 @@
jcontentPane.add(scrollPane, BorderLayout.CENTER);
jcontentPane.add(btnPanel,BorderLayout.SOUTH);
+
+
+
+ // Reminder alarm, Mouse and Keyboard delay START
+ String str = ReminderPlugin.getInstance().getSettings().getProperty("MouseAndKeyboardDelay","0");
+ int intMouseAndKeyboardDelay = Integer.parseInt(str);
+
+ if (intMouseAndKeyboardDelay > 0) {
+ mCloseBt.setEnabled(false);
+ mReminderCB.setEnabled(false);
+
+ // Disable ESC Key
+ mDelayKeyListener = new KeyListener() {
+ @Override
+ public void keyPressed(KeyEvent e) {
+ if (e.getKeyCode() == KeyEvent.VK_ESCAPE) {
+ e.consume();
+ }
+ }
+ @Override
+ public void keyTyped(KeyEvent e) {
+ // Auto-generated method stub
+ }
+ @Override
+ public void keyReleased(KeyEvent e) {
+ // Auto-generated method stub
+ }
+ };
+ mDialog.addKeyListener(mDelayKeyListener);
+ }
+
+ mMouseAndKeyboardTimer = new Timer(intMouseAndKeyboardDelay * 100, new ActionListener() {
+ public void actionPerformed(final ActionEvent evt) {
+ mReminderCB.setEnabled(true);
+ mCloseBt.setEnabled(true);
+ mReminderCB.requestFocus();
+ mDialog.removeKeyListener(mDelayKeyListener);
+ }
+ });
+ mMouseAndKeyboardTimer.start();
+ // Reminder alarm, Mouse and Keyboard delay END
+
+
+
+
+
mCloseBt.addActionListener(new ActionListener() {
public void actionPerformed(final ActionEvent event) {
close();
--- tvbrowser-3.4.1.0_ORI/src/tvbrowser/extras/reminderplugin/ReminderSettingsTab.java Wed Dec 24 11:01:00 2014
+++ tvbrowser-3.4.1.0_MOD/src/tvbrowser/extras/reminderplugin/ReminderSettingsTab.java Sun Sep 06 18:44:34 2015
@@ -108,6 +108,10 @@
private JRadioButton mScrollTimeToNext, mScrollTimeOnDay;
private JComboBox mDefaultReminderEntryList;
+
+ //Reminder alarm, Mouse and Keyboard delay
+ private JSpinner mMouseAndKeyboardDelayTimeSp;
+ private JLabel mMouseAndKeyboardDelayTimeLabel;
private String mExecFileStr, mExecParamStr;
private Object mTestSound;
@@ -372,6 +376,39 @@
}
});
+
+
+
+
+
+ // Reminder alarm, Mouse and Keyboard delay START
+ int intMouseAndKeyboardDelay = 0;
+ try {
+ String asString = mSettings.getProperty("MouseAndKeyboardDelay", "0");
+ intMouseAndKeyboardDelay = Integer.parseInt(asString);
+
+ if(intMouseAndKeyboardDelay < 0) {
+ intMouseAndKeyboardDelay = 0;
+ }
+ if(intMouseAndKeyboardDelay > 100) {
+ intMouseAndKeyboardDelay = 100;
+ }
+ } catch (Exception exc) {
+ // ignore
+ }
+
+ mMouseAndKeyboardDelayTimeSp = new JSpinner(new SpinnerNumberModel(intMouseAndKeyboardDelay , 0 , 100 , 5));
+ pb.add(mMouseAndKeyboardDelayTimeSp, CC.xyw(2,33,1));
+ mMouseAndKeyboardDelayTimeLabel = new JLabel(mLocalizer.msg("MouseAndKeyboardDelayTimeLabel","Tenth of a second. A value of 20 means 2 seconds delay."));
+ pb.add(mMouseAndKeyboardDelayTimeLabel, CC.xy(4 , 33));
+ // Reminder alarm, Mouse and Keyboard delay END
+
+
+
+
+
+
+
pb.addSeparator(DefaultMarkingPrioritySelectionPanel.getTitle(), CC.xyw(1,34,10));
pb.add(mMarkingsPanel = DefaultMarkingPrioritySelectionPanel.createPanel(ReminderPlugin.getInstance().getMarkPriority(),false,false),CC.xyw(2,36,9));
@@ -583,6 +620,9 @@
mSettings.setProperty("provideTab", String.valueOf(mProvideTab.isSelected()));
mSettings.setProperty(ReminderPropertyDefaults.SCROLL_TIME_TYPE_NEXT, String.valueOf(mScrollTimeToNext.isSelected()));
+
+ // Reminder alarm, Mouse and Keyboard delay
+ mSettings.setProperty("MouseAndKeyboardDelay", mMouseAndKeyboardDelayTimeSp.getValue().toString());
for(int i = 0; i < mReminderWindowPosition.length; i++) {
if(mReminderWindowPosition[i].isSelected()) {
--- tvbrowser-3.4.1.0_ORI/src/tvbrowser/extras/reminderplugin/reminderplugin.properties Wed Dec 24 11:00:58 2014
+++ tvbrowser-3.4.1.0_MOD/src/tvbrowser/extras/reminderplugin/reminderplugin.properties Sun Sep 06 18:32:38 2015
@@ -101,6 +101,7 @@
ReminderSettingsTab.timeButtonBehaviour = Time buttons behaviour:
ReminderSettingsTab.timeButtonScrollDay = Scroll to occurence of time on shown day in list
ReminderSettingsTab.timeButtonScrollNext = Scroll to next occurence of time from shown programs onward
+ReminderSettingsTab.MouseAndKeyboardDelayTimeLabel= Tenth of a second. A value of 20 means 2 seconds delay.
ReminderTableModel.all = All
ReminderTableModel.timeMenu = Reminder time
--- tvbrowser-3.4.1.0_ORI/src/tvbrowser/extras/reminderplugin/reminderplugin_de.properties Wed Dec 24 11:01:00 2014
+++ tvbrowser-3.4.1.0_MOD/src/tvbrowser/extras/reminderplugin/reminderplugin_de.properties Sun Sep 06 18:33:03 2015
@@ -105,6 +105,7 @@
ReminderSettingsTab.timeButtonBehaviour = Verhalten der Zeitkn\u00F6pfe:
ReminderSettingsTab.timeButtonScrollDay = Zur Zeit am angezeigten Tag springen
ReminderSettingsTab.timeButtonScrollNext = Von aktueller Ansicht vorw\u00E4rts zum n\u00E4chsten Auftreten der Zeit springen
+ReminderSettingsTab.MouseAndKeyboardDelayTimeLabel= Zehntel-Sekunden. Der Wert 20 ergibt 2 Sekunden Wartezeit.
ReminderTableModel.all = Alle
ReminderTableModel.timeMenu = Erinnerungszeitpunkt