diff --git a/platform/platform-impl/src/com/intellij/ide/GeneralSettingsConfigurable.java b/platform/platform-impl/src/com/intellij/ide/GeneralSettingsConfigurable.java index a6c82bb19004..6929e9cd126a 100644 --- a/platform/platform-impl/src/com/intellij/ide/GeneralSettingsConfigurable.java +++ b/platform/platform-impl/src/com/intellij/ide/GeneralSettingsConfigurable.java @@ -23,16 +23,14 @@ import com.intellij.openapi.options.SearchableConfigurable; import com.intellij.openapi.options.ex.ConfigurableWrapper; import com.intellij.ui.components.JBRadioButton; import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; import javax.swing.*; -import javax.swing.event.ChangeEvent; -import javax.swing.event.ChangeListener; import java.awt.*; import java.util.List; +import java.util.concurrent.TimeUnit; /** - * To provide additional options in General section register implementation of {@link com.intellij.openapi.options.SearchableConfigurable} in the plugin.xml: + * To provide additional options in General section register implementation of {@link SearchableConfigurable} in the plugin.xml: *

* <extensions defaultExtensionNs="com.intellij">
*   <generalOptionsProvider instance="class-name"/>
@@ -49,6 +47,7 @@ public class GeneralSettingsConfigurable extends CompositeConfigurable 0) { - settings.setInactiveTimeout(newInactiveTimeout); + int newInactiveTimeoutSeconds = Integer.parseInt(myComponent.myTfInactiveTimeout.getText()); + if (newInactiveTimeoutSeconds > 0 && TimeUnit.SECONDS.toHours(newInactiveTimeoutSeconds) < 24) { + settings.setInactiveTimeout(newInactiveTimeoutSeconds); } } catch (NumberFormatException ignored) { } @@ -97,11 +96,11 @@ public class GeneralSettingsConfigurable extends CompositeConfigurable myComponent.myTfInactiveTimeout.setEditable(myComponent.myChkAutoSaveIfInactive.isSelected())); List list = getConfigurables(); if (!list.isEmpty()) { @@ -144,10 +141,12 @@ public class GeneralSettingsConfigurable extends CompositeConfigurable createConfigurables() { return ConfigurableWrapper.createConfigurables(EP_NAME); } diff --git a/platform/platform-impl/src/com/intellij/ide/IdeEventQueue.java b/platform/platform-impl/src/com/intellij/ide/IdeEventQueue.java index 84ac9d166627..02f183a96ba6 100644 --- a/platform/platform-impl/src/com/intellij/ide/IdeEventQueue.java +++ b/platform/platform-impl/src/com/intellij/ide/IdeEventQueue.java @@ -60,6 +60,7 @@ import java.lang.reflect.Field; import java.lang.reflect.Method; import java.util.*; import java.util.List; +import java.util.concurrent.TimeUnit; import java.util.concurrent.atomic.AtomicInteger; /** @@ -235,14 +236,15 @@ public class IdeEventQueue extends EventQueue { } } - - public void addIdleListener(@NotNull final Runnable runnable, final int timeout) { - LOG.assertTrue(timeout > 0); + public void addIdleListener(@NotNull final Runnable runnable, final int timeoutMillis) { + if(timeoutMillis <= 0 || TimeUnit.MILLISECONDS.toHours(timeoutMillis) >= 24) { + throw new IllegalArgumentException("This timeout value is unsupported: " + timeoutMillis); + } synchronized (myLock) { myIdleListeners.add(runnable); - final MyFireIdleRequest request = new MyFireIdleRequest(runnable, timeout); + final MyFireIdleRequest request = new MyFireIdleRequest(runnable, timeoutMillis); myListener2Request.put(runnable, request); - UIUtil.invokeLaterIfNeeded(() -> myIdleRequestsAlarm.addRequest(request, timeout)); + UIUtil.invokeLaterIfNeeded(() -> myIdleRequestsAlarm.addRequest(request, timeoutMillis)); } }