Added Timeout on Chat Rooms.

git-svn-id: http://svn.igniterealtime.org/svn/repos/spark/trunk@4871 b35dd754-fafc-0310-a699-88a17e54d16e
This commit is contained in:
Derek DeMoro
2006-08-10 04:43:04 +00:00
committed by derek
parent 0dba8372ee
commit f14902dc4b
11 changed files with 1187 additions and 1214 deletions

View File

@ -179,7 +179,8 @@
</component>
<component name="ProjectModuleManager">
<modules>
<module fileurl="file://C:/code/spark/plugins/fastpath/Fastpath.iml" filepath="C:/code/spark/plugins/fastpath/Fastpath.iml" />
<module fileurl="file://$PROJECT_DIR$/../../plugins/fastpath/Fastpath.iml" filepath="$PROJECT_DIR$/../../plugins/fastpath/Fastpath.iml" />
<module fileurl="file://$PROJECT_DIR$/Spark/Spark.iml" filepath="$PROJECT_DIR$/Spark/Spark.iml" />
<module fileurl="file://$PROJECT_DIR$/Spark/Spark.iml" filepath="$PROJECT_DIR$/Spark/Spark.iml" />
<module fileurl="file://$PROJECT_DIR$/Spark.iml" filepath="$PROJECT_DIR$/Spark.iml" />
</modules>

View File

@ -126,91 +126,91 @@
</component>
<component name="FileEditorManager">
<leaf>
<file leaf-file-name="Notifications.java" pinned="false" current="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/../../src/java/org/jivesoftware/spark/component/Notifications.java">
<file leaf-file-name="ChatRoom.java" pinned="false" current="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/../../src/java/org/jivesoftware/spark/ui/ChatRoom.java">
<provider selected="true" editor-type-id="text-editor">
<state line="277" column="57" selection-start="8150" selection-end="8150" vertical-scroll-proportion="0.21428572">
<state line="454" column="0" selection-start="15832" selection-end="15832" vertical-scroll-proportion="-0.01494396">
<folding />
</state>
</provider>
</entry>
</file>
<file leaf-file-name="RosterDialog.java" pinned="false" current="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/../../src/java/org/jivesoftware/spark/ui/RosterDialog.java">
<file leaf-file-name="GroupChatRoom.java" pinned="false" current="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/../../src/java/org/jivesoftware/spark/ui/rooms/GroupChatRoom.java">
<provider selected="true" editor-type-id="text-editor">
<state line="298" column="9" selection-start="10725" selection-end="10725" vertical-scroll-proportion="0.2847358">
<state line="509" column="40" selection-start="17242" selection-end="17242" vertical-scroll-proportion="0.23785803">
<folding />
</state>
</provider>
</entry>
</file>
<file leaf-file-name="NewRoster.java" pinned="false" current="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/../../src/java/org/jivesoftware/spark/ui/NewRoster.java">
<file leaf-file-name="ChatRoomImpl.java" pinned="false" current="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/../../src/java/org/jivesoftware/spark/ui/rooms/ChatRoomImpl.java">
<provider selected="true" editor-type-id="text-editor">
<state line="108" column="9" selection-start="3099" selection-end="3099" vertical-scroll-proportion="0.23776908">
<state line="582" column="28" selection-start="20487" selection-end="20487" vertical-scroll-proportion="0.82316315">
<folding />
</state>
</provider>
</entry>
</file>
<file leaf-file-name="ChatViewer.java" pinned="false" current="false" current-in-tab="false">
<entry file="file://C:/code/spark/plugins/fastpath/src/java/com/jivesoftware/fastpath/workspace/panes/ChatViewer.java">
<file leaf-file-name="ChatManager.java" pinned="false" current="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/../../src/java/org/jivesoftware/spark/ChatManager.java">
<provider selected="true" editor-type-id="text-editor">
<state line="75" column="65" selection-start="2797" selection-end="2797" vertical-scroll-proportion="0.22113504">
<state line="422" column="41" selection-start="14020" selection-end="14020" vertical-scroll-proportion="0.19551681">
<folding />
</state>
</provider>
</entry>
</file>
<file leaf-file-name="OnlineAgents.java" pinned="false" current="false" current-in-tab="false">
<entry file="file://C:/code/spark/plugins/fastpath/src/java/com/jivesoftware/fastpath/workspace/panes/OnlineAgents.java">
<file leaf-file-name="ChatContainer.java" pinned="false" current="true" current-in-tab="true">
<entry file="file://$PROJECT_DIR$/../../src/java/org/jivesoftware/spark/ui/ChatContainer.java">
<provider selected="true" editor-type-id="text-editor">
<state line="212" column="77" selection-start="7881" selection-end="7881" vertical-scroll-proportion="0.45401174">
<state line="122" column="0" selection-start="3974" selection-end="3974" vertical-scroll-proportion="0.66625154">
<folding />
</state>
</provider>
</entry>
</file>
<file leaf-file-name="WorkgroupRosterTree.java" pinned="false" current="false" current-in-tab="false">
<entry file="file://C:/code/spark/plugins/fastpath/src/java/com/jivesoftware/fastpath/workspace/invite/WorkgroupRosterTree.java">
<file leaf-file-name="SparkTabbedPane.java" pinned="false" current="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/../../src/java/org/jivesoftware/spark/component/tabbedPane/SparkTabbedPane.java">
<provider selected="true" editor-type-id="text-editor">
<state line="152" column="79" selection-start="5396" selection-end="5396" vertical-scroll-proportion="0.54696673">
<state line="70" column="11" selection-start="1812" selection-end="1812" vertical-scroll-proportion="0.3325031">
<folding />
</state>
</provider>
</entry>
</file>
<file leaf-file-name="WorkgroupManager.java" pinned="false" current="false" current-in-tab="false">
<entry file="file://C:/code/spark/plugins/fastpath/src/java/com/jivesoftware/fastpath/internal/WorkgroupManager.java">
<file leaf-file-name="PluginManager.java" pinned="false" current="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/../../src/java/org/jivesoftware/spark/PluginManager.java">
<provider selected="true" editor-type-id="text-editor">
<state line="264" column="57" selection-start="9817" selection-end="9817" vertical-scroll-proportion="0.22113504">
<state line="54" column="52" selection-start="1599" selection-end="1694" vertical-scroll-proportion="0.25305623">
<folding />
</state>
</provider>
</entry>
</file>
<file leaf-file-name="FormUtils.java" pinned="false" current="true" current-in-tab="true">
<entry file="file://C:/code/spark/plugins/fastpath/src/java/com/jivesoftware/fastpath/internal/FormUtils.java">
<file leaf-file-name="SparkManager.java" pinned="false" current="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/../../src/java/org/jivesoftware/spark/SparkManager.java">
<provider selected="true" editor-type-id="text-editor">
<state line="70" column="47" selection-start="2259" selection-end="2259" vertical-scroll-proportion="0.4373777">
<state line="171" column="52" selection-start="5584" selection-end="5584" vertical-scroll-proportion="0.21882641">
<folding />
</state>
</provider>
</entry>
</file>
<file leaf-file-name="TransportManager.java" pinned="false" current="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/../../src/java/org/jivesoftware/sparkimpl/plugin/gateways/transports/TransportManager.java">
<file leaf-file-name="ContactGroup.java" pinned="false" current="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/../../src/java/org/jivesoftware/spark/ui/ContactGroup.java">
<provider selected="true" editor-type-id="text-editor">
<state line="71" column="79" selection-start="2270" selection-end="2270" vertical-scroll-proportion="0.22113504">
<state line="547" column="0" selection-start="16407" selection-end="16407" vertical-scroll-proportion="0.19800748">
<folding />
</state>
</provider>
</entry>
</file>
<file leaf-file-name="GatewayPlugin.java" pinned="false" current="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/../../src/java/org/jivesoftware/sparkimpl/plugin/gateways/GatewayPlugin.java">
<file leaf-file-name="ContactList.java" pinned="false" current="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/../../src/java/org/jivesoftware/spark/ui/ContactList.java">
<provider selected="true" editor-type-id="text-editor">
<state line="247" column="69" selection-start="9175" selection-end="9175" vertical-scroll-proportion="0.65068495">
<state line="330" column="0" selection-start="12210" selection-end="12210" vertical-scroll-proportion="0.19800748">
<folding />
</state>
</provider>
@ -246,7 +246,7 @@
<setting name="SHOW_AS_DEPLOYMENT_VIEW" value="false" />
</component>
<component name="ModuleEditorState">
<option name="LAST_EDITED_MODULE_NAME" value="Fastpath" />
<option name="LAST_EDITED_MODULE_NAME" value="Spark" />
<option name="LAST_EDITED_TAB_NAME" value="Paths" />
</component>
<component name="NamedScopeManager" />
@ -256,48 +256,6 @@
<option name="myItemId" value="Spark.ipr" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PackageViewProjectNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="Spark" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PackageViewModuleNode" />
</PATH_ELEMENT>
</PATH>
<PATH>
<PATH_ELEMENT>
<option name="myItemId" value="Spark.ipr" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PackageViewProjectNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="Spark" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PackageViewModuleNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="org.jivesoftware" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PackageElementNode" />
</PATH_ELEMENT>
</PATH>
<PATH>
<PATH_ELEMENT>
<option name="myItemId" value="Spark.ipr" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PackageViewProjectNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="Fastpath" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PackageViewModuleNode" />
</PATH_ELEMENT>
</PATH>
<PATH>
<PATH_ELEMENT>
<option name="myItemId" value="Spark.ipr" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PackageViewProjectNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="Fastpath" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PackageViewModuleNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="com.jivesoftware.fastpath" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PackageElementNode" />
</PATH_ELEMENT>
</PATH>
</component>
<component name="PerforceChangeBrowserSettings">
@ -361,66 +319,16 @@
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewModuleNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="PsiDirectory:C:\spark" />
<option name="myItemId" value="PsiDirectory:C:\code\spark" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
</PATH>
<PATH>
<PATH_ELEMENT>
<option name="myItemId" value="Spark.ipr" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="Spark" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewModuleNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="PsiDirectory:C:\spark" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="PsiDirectory:C:\spark\src" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
</PATH>
<PATH>
<PATH_ELEMENT>
<option name="myItemId" value="Spark.ipr" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="Spark" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewModuleNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="PsiDirectory:C:\spark" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="PsiDirectory:C:\spark\src" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="PsiDirectory:C:\spark\src\java" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="PsiDirectory:C:\spark\src\java\org\jivesoftware" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
</PATH>
<PATH>
<PATH_ELEMENT>
<option name="myItemId" value="Spark.ipr" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
</PATH_ELEMENT>
</PATH>
</component>
<component name="ProjectReloadState">
<option name="STATE" value="0" />
</component>
<component name="ProjectView">
<navigator currentView="PackagesPane" splitterProportion="0.5">
<navigator currentView="ProjectPane" splitterProportion="0.5">
<flattenPackages ProjectPane="false" />
<showMembers />
<showModules />
@ -465,92 +373,7 @@
<option name="SHOW_DIALOG" value="true" />
</component>
<component name="RecentsManager" />
<component name="RestoreUpdateTree">
<UpdateInfo date="8/9/06 12:52 PM" ActionInfo="Update">
<UpdatedFiles>
<FILE-GROUP>
<option name="myUpdateName" value="Updated from server" />
<option name="myStatusName" value="Changed on server" />
<option name="mySupportsDeletion" value="false" />
<option name="myCanBeAbsent" value="false" />
<option name="myId" value="CHANGED_ON_SERVER" />
<FILE-GROUP>
<option name="myUpdateName" value="Updated" />
<option name="myStatusName" value="Changed" />
<option name="mySupportsDeletion" value="false" />
<option name="myCanBeAbsent" value="false" />
<option name="myId" value="UPDATED" />
<PATH>C:\spark\src\java\org\jivesoftware\spark\PluginManager.java</PATH>
<PATH>C:\spark\src\java\org\jivesoftware\sparkimpl\plugin\viewer\PluginViewer.java</PATH>
<PATH>C:\spark\src\java\org\jivesoftware\sparkimpl\plugin\viewer\SparkPlugUI.java</PATH>
</FILE-GROUP>
<FILE-GROUP>
<option name="myUpdateName" value="Created" />
<option name="myStatusName" value="Created" />
<option name="mySupportsDeletion" value="false" />
<option name="myCanBeAbsent" value="false" />
<option name="myId" value="CREATED" />
</FILE-GROUP>
<FILE-GROUP>
<option name="myUpdateName" value="Deleted" />
<option name="myStatusName" value="Deleted" />
<option name="mySupportsDeletion" value="false" />
<option name="myCanBeAbsent" value="true" />
<option name="myId" value="REMOVED_FROM_REPOSITORY" />
</FILE-GROUP>
<FILE-GROUP>
<option name="myUpdateName" value="Restored" />
<option name="myStatusName" value="Will be restored" />
<option name="mySupportsDeletion" value="false" />
<option name="myCanBeAbsent" value="false" />
<option name="myId" value="RESTORED" />
</FILE-GROUP>
</FILE-GROUP>
<FILE-GROUP>
<option name="myUpdateName" value="Modified" />
<option name="myStatusName" value="Modified" />
<option name="mySupportsDeletion" value="false" />
<option name="myCanBeAbsent" value="false" />
<option name="myId" value="MODIFIED" />
</FILE-GROUP>
<FILE-GROUP>
<option name="myUpdateName" value="Merged with conflicts" />
<option name="myStatusName" value="Will be merged with conflicts" />
<option name="mySupportsDeletion" value="false" />
<option name="myCanBeAbsent" value="false" />
<option name="myId" value="MERGED_WITH_CONFLICTS" />
</FILE-GROUP>
<FILE-GROUP>
<option name="myUpdateName" value="Merged" />
<option name="myStatusName" value="Will be merged" />
<option name="mySupportsDeletion" value="false" />
<option name="myCanBeAbsent" value="false" />
<option name="myId" value="MERGED" />
</FILE-GROUP>
<FILE-GROUP>
<option name="myUpdateName" value="Not in repository" />
<option name="myStatusName" value="Not in repository" />
<option name="mySupportsDeletion" value="true" />
<option name="myCanBeAbsent" value="false" />
<option name="myId" value="UNKNOWN" />
</FILE-GROUP>
<FILE-GROUP>
<option name="myUpdateName" value="Locally added" />
<option name="myStatusName" value="Locally added" />
<option name="mySupportsDeletion" value="false" />
<option name="myCanBeAbsent" value="false" />
<option name="myId" value="LOCALLY_ADDED" />
</FILE-GROUP>
<FILE-GROUP>
<option name="myUpdateName" value="Locally removed" />
<option name="myStatusName" value="Locally removed" />
<option name="mySupportsDeletion" value="false" />
<option name="myCanBeAbsent" value="false" />
<option name="myId" value="LOCALLY_REMOVED" />
</FILE-GROUP>
</UpdatedFiles>
</UpdateInfo>
</component>
<component name="RestoreUpdateTree" />
<component name="RunManager">
<activeType name="Application" />
<tempConfiguration selected="false" default="false" name="SparkTabbedPane" type="Application" factoryName="Application">
@ -570,6 +393,15 @@
<ConfigurationWrapper RunnerId="Run" />
<ConfigurationWrapper RunnerId="Debug" />
</tempConfiguration>
<configuration selected="false" default="true" type="Application" factoryName="Application">
<option name="MAIN_CLASS_NAME" />
<option name="VM_PARAMETERS" />
<option name="PROGRAM_PARAMETERS" />
<option name="WORKING_DIRECTORY" value="$PROJECT_DIR$" />
<option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false" />
<option name="ALTERNATIVE_JRE_PATH" />
<module name="" />
</configuration>
<configuration selected="false" default="true" type="Applet" factoryName="Applet">
<module name="" />
<option name="MAIN_CLASS_NAME" />
@ -582,15 +414,6 @@
<option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false" />
<option name="ALTERNATIVE_JRE_PATH" />
</configuration>
<configuration selected="false" default="true" type="Application" factoryName="Application">
<option name="MAIN_CLASS_NAME" />
<option name="VM_PARAMETERS" />
<option name="PROGRAM_PARAMETERS" />
<option name="WORKING_DIRECTORY" value="$PROJECT_DIR$" />
<option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false" />
<option name="ALTERNATIVE_JRE_PATH" />
<module name="" />
</configuration>
<configuration selected="false" default="true" type="JUnit" factoryName="JUnit">
<module name="" />
<option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false" />
@ -752,15 +575,15 @@
</todo-panel>
</component>
<component name="ToolWindowManager">
<frame x="-4" y="-4" width="1928" height="1178" extended-state="0" />
<frame x="0" y="0" width="1280" height="994" extended-state="0" />
<editor active="true" />
<layout>
<window_info id="CVS" active="false" anchor="bottom" auto_hide="false" internal_type="docked" type="docked" visible="false" weight="0.33" order="8" />
<window_info id="TODO" active="false" anchor="bottom" auto_hide="false" internal_type="docked" type="docked" visible="false" weight="0.3298731" order="7" />
<window_info id="Project" active="false" anchor="left" auto_hide="false" internal_type="docked" type="docked" visible="true" weight="0.19402985" order="0" />
<window_info id="Project" active="false" anchor="left" auto_hide="false" internal_type="docked" type="docked" visible="true" weight="0.2019544" order="0" />
<window_info id="Find" active="false" anchor="bottom" auto_hide="false" internal_type="docked" type="docked" visible="false" weight="0.32" order="1" />
<window_info id="Structure" active="false" anchor="left" auto_hide="false" internal_type="docked" type="docked" visible="false" weight="0.25" order="1" />
<window_info id="Messages" active="false" anchor="bottom" auto_hide="false" internal_type="docked" type="docked" visible="false" weight="0.3209524" order="8" />
<window_info id="Messages" active="false" anchor="bottom" auto_hide="false" internal_type="docked" type="docked" visible="false" weight="0.32036614" order="8" />
<window_info id="Inspection" active="false" anchor="bottom" auto_hide="false" internal_type="docked" type="docked" visible="false" weight="0.3990476" order="6" />
<window_info id="Module Dependencies" active="false" anchor="right" auto_hide="false" internal_type="docked" type="docked" visible="false" weight="0.33" order="3" />
<window_info id="Dependency Viewer" active="false" anchor="bottom" auto_hide="false" internal_type="docked" type="docked" visible="false" weight="0.33" order="8" />
@ -769,7 +592,7 @@
<window_info id="Run" active="false" anchor="bottom" auto_hide="false" internal_type="docked" type="docked" visible="false" weight="0.26761904" order="2" />
<window_info id="Hierarchy" active="false" anchor="right" auto_hide="false" internal_type="docked" type="docked" visible="false" weight="0.2496" order="2" />
<window_info id="File View" active="false" anchor="right" auto_hide="false" internal_type="docked" type="docked" visible="false" weight="0.33" order="3" />
<window_info id="Debug" active="false" anchor="bottom" auto_hide="false" internal_type="docked" type="docked" visible="false" weight="0.37428573" order="4" />
<window_info id="Debug" active="false" anchor="bottom" auto_hide="false" internal_type="docked" type="docked" visible="false" weight="0.37759817" order="4" />
<window_info id="Commander" active="false" anchor="right" auto_hide="false" internal_type="sliding" type="sliding" visible="false" weight="0.4" order="0" />
<window_info id="Version Control" active="false" anchor="bottom" auto_hide="false" internal_type="docked" type="docked" visible="false" weight="0.27142859" order="8" />
<window_info id="Web" active="false" anchor="left" auto_hide="false" internal_type="docked" type="docked" visible="false" weight="0.25" order="2" />
@ -851,107 +674,107 @@
<option name="FILTER_TARGETS" value="false" />
</component>
<component name="editorHistoryManager">
<entry file="file://$PROJECT_DIR$/../../src/java/org/jivesoftware/spark/component/RosterTree.java">
<entry file="file://$PROJECT_DIR$/../../src/java/org/jivesoftware/sparkimpl/preference/chat/ChatPreference.java">
<provider selected="true" editor-type-id="text-editor">
<state line="128" column="79" selection-start="4436" selection-end="4436" vertical-scroll-proportion="0.52359885">
<state line="86" column="57" selection-start="2996" selection-end="2996" vertical-scroll-proportion="0.511432">
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/../../src/java/org/jivesoftware/MainWindow.java">
<entry file="jar://C:/Program Files/Java/jdk1.5.0_03/src.zip!/java/util/AbstractList.java">
<provider selected="true" editor-type-id="text-editor">
<state line="253" column="74" selection-start="8212" selection-end="8212" vertical-scroll-proportion="0.32300884">
<state line="448" column="0" selection-start="16639" selection-end="16639" vertical-scroll-proportion="0.34552845">
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/../../src/java/org/jivesoftware/spark/ui/RosterPickList.java">
<entry file="file://$PROJECT_DIR$/../../src/java/org/jivesoftware/spark/util/ModelUtil.java">
<provider selected="true" editor-type-id="text-editor">
<state line="72" column="9" selection-start="2533" selection-end="2533" vertical-scroll-proportion="0.3480826">
<state line="23" column="19" selection-start="519" selection-end="519" vertical-scroll-proportion="-7.469512">
<folding />
</state>
</provider>
</entry>
<entry file="file://C:/code/spark/plugins/fastpath/src/java/com/jivesoftware/fastpath/workspace/invite/WorkgroupInvitationDialog.java">
<entry file="file://$PROJECT_DIR$/../../src/java/org/jivesoftware/spark/util/StringUtils.java">
<provider selected="true" editor-type-id="text-editor">
<state line="335" column="81" selection-start="12060" selection-end="12060" vertical-scroll-proportion="0.34346506">
<state line="23" column="21" selection-start="607" selection-end="611" vertical-scroll-proportion="0.5731707">
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/../../src/java/org/jivesoftware/sparkimpl/plugin/chat/PresenceChangePlugin.java">
<entry file="file://$PROJECT_DIR$/../../src/java/org/jivesoftware/spark/SessionManager.java">
<provider selected="true" editor-type-id="text-editor">
<state line="96" column="130" selection-start="3656" selection-end="3656" vertical-scroll-proportion="0.3905775">
<state line="48" column="19" selection-start="1755" selection-end="1755" vertical-scroll-proportion="0.08138101">
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/../../src/java/org/jivesoftware/sparkimpl/plugin/gateways/GatewayPlugin.java">
<entry file="file://$PROJECT_DIR$/../../src/java/org/jivesoftware/spark/ChatManager.java">
<provider selected="true" editor-type-id="text-editor">
<state line="247" column="69" selection-start="9175" selection-end="9175" vertical-scroll-proportion="0.65068495">
<state line="422" column="41" selection-start="14020" selection-end="14020" vertical-scroll-proportion="0.19551681">
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/../../src/java/org/jivesoftware/sparkimpl/plugin/gateways/transports/TransportManager.java">
<entry file="file://$PROJECT_DIR$/../../src/java/org/jivesoftware/spark/ui/ContactList.java">
<provider selected="true" editor-type-id="text-editor">
<state line="71" column="79" selection-start="2270" selection-end="2270" vertical-scroll-proportion="0.22113504">
<state line="330" column="0" selection-start="12210" selection-end="12210" vertical-scroll-proportion="0.19800748">
<folding />
</state>
</provider>
</entry>
<entry file="file://C:/code/spark/plugins/fastpath/src/java/com/jivesoftware/fastpath/internal/WorkgroupManager.java">
<entry file="file://$PROJECT_DIR$/../../src/java/org/jivesoftware/spark/ui/ContactGroup.java">
<provider selected="true" editor-type-id="text-editor">
<state line="264" column="57" selection-start="9817" selection-end="9817" vertical-scroll-proportion="0.22113504">
<state line="547" column="0" selection-start="16407" selection-end="16407" vertical-scroll-proportion="0.19800748">
<folding />
</state>
</provider>
</entry>
<entry file="file://C:/code/spark/plugins/fastpath/src/java/com/jivesoftware/fastpath/workspace/invite/WorkgroupRosterTree.java">
<entry file="file://$PROJECT_DIR$/../../src/java/org/jivesoftware/spark/SparkManager.java">
<provider selected="true" editor-type-id="text-editor">
<state line="152" column="79" selection-start="5396" selection-end="5396" vertical-scroll-proportion="0.54696673">
<state line="171" column="52" selection-start="5584" selection-end="5584" vertical-scroll-proportion="0.21882641">
<folding />
</state>
</provider>
</entry>
<entry file="file://C:/code/spark/plugins/fastpath/src/java/com/jivesoftware/fastpath/workspace/panes/OnlineAgents.java">
<entry file="file://$PROJECT_DIR$/../../src/java/org/jivesoftware/spark/PluginManager.java">
<provider selected="true" editor-type-id="text-editor">
<state line="212" column="77" selection-start="7881" selection-end="7881" vertical-scroll-proportion="0.45401174">
<state line="54" column="52" selection-start="1599" selection-end="1694" vertical-scroll-proportion="0.25305623">
<folding />
</state>
</provider>
</entry>
<entry file="file://C:/code/spark/plugins/fastpath/src/java/com/jivesoftware/fastpath/workspace/panes/ChatViewer.java">
<entry file="file://$PROJECT_DIR$/../../src/java/org/jivesoftware/spark/ui/rooms/ChatRoomImpl.java">
<provider selected="true" editor-type-id="text-editor">
<state line="75" column="65" selection-start="2797" selection-end="2797" vertical-scroll-proportion="0.22113504">
<state line="582" column="28" selection-start="20487" selection-end="20487" vertical-scroll-proportion="0.82316315">
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/../../src/java/org/jivesoftware/spark/ui/NewRoster.java">
<entry file="file://$PROJECT_DIR$/../../src/java/org/jivesoftware/spark/ui/rooms/GroupChatRoom.java">
<provider selected="true" editor-type-id="text-editor">
<state line="108" column="9" selection-start="3099" selection-end="3099" vertical-scroll-proportion="0.23776908">
<state line="509" column="40" selection-start="17242" selection-end="17242" vertical-scroll-proportion="0.23785803">
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/../../src/java/org/jivesoftware/spark/ui/RosterDialog.java">
<entry file="file://$PROJECT_DIR$/../../src/java/org/jivesoftware/spark/ui/ChatRoom.java">
<provider selected="true" editor-type-id="text-editor">
<state line="298" column="9" selection-start="10725" selection-end="10725" vertical-scroll-proportion="0.2847358">
<state line="454" column="0" selection-start="15832" selection-end="15832" vertical-scroll-proportion="-0.01494396">
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/../../src/java/org/jivesoftware/spark/component/Notifications.java">
<entry file="file://$PROJECT_DIR$/../../src/java/org/jivesoftware/spark/component/tabbedPane/SparkTabbedPane.java">
<provider selected="true" editor-type-id="text-editor">
<state line="277" column="57" selection-start="8150" selection-end="8150" vertical-scroll-proportion="0.21428572">
<state line="70" column="11" selection-start="1812" selection-end="1812" vertical-scroll-proportion="0.3325031">
<folding />
</state>
</provider>
</entry>
<entry file="file://C:/code/spark/plugins/fastpath/src/java/com/jivesoftware/fastpath/internal/FormUtils.java">
<entry file="file://$PROJECT_DIR$/../../src/java/org/jivesoftware/spark/ui/ChatContainer.java">
<provider selected="true" editor-type-id="text-editor">
<state line="70" column="47" selection-start="2259" selection-end="2259" vertical-scroll-proportion="0.4373777">
<state line="122" column="0" selection-start="3974" selection-end="3974" vertical-scroll-proportion="0.66625154">
<folding />
</state>
</provider>

View File

@ -21,6 +21,7 @@ import org.jivesoftware.smack.util.StringUtils;
import org.jivesoftware.smackx.Form;
import org.jivesoftware.smackx.MessageEventNotificationListener;
import org.jivesoftware.smackx.muc.MultiUserChat;
import org.jivesoftware.spark.component.tabbedPane.SparkTab;
import org.jivesoftware.spark.ui.ChatContainer;
import org.jivesoftware.spark.ui.ChatRoom;
import org.jivesoftware.spark.ui.ChatRoomListener;
@ -35,16 +36,23 @@ import org.jivesoftware.spark.ui.rooms.GroupChatRoom;
import org.jivesoftware.spark.util.log.Log;
import org.jivesoftware.sparkimpl.preference.chat.ChatPreference;
import org.jivesoftware.sparkimpl.preference.chat.ChatPreferences;
import org.jivesoftware.sparkimpl.settings.local.LocalPreferences;
import org.jivesoftware.sparkimpl.settings.local.SettingsManager;
import javax.swing.Icon;
import javax.swing.SwingUtilities;
import java.awt.Color;
import java.awt.Font;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Set;
import java.util.Timer;
import java.util.TimerTask;
import javax.swing.Icon;
import javax.swing.JLabel;
import javax.swing.SwingUtilities;
/**
* Handles the Chat Management of each individual <code>Workspace</code>. The ChatManager is responsible
@ -62,11 +70,34 @@ public class ChatManager implements MessageEventNotificationListener {
private Set<String> customList = new HashSet<String>();
private static ChatManager singleton;
private static final Object LOCK = new Object();
/**
* Returns the singleton instance of <CODE>ChatManager</CODE>,
* creating it if necessary.
* <p/>
*
* @return the singleton instance of <Code>ChatManager</CODE>
*/
public static ChatManager getInstance() {
// Synchronize on LOCK to ensure that we don't end up creating
// two singletons.
synchronized (LOCK) {
if (null == singleton) {
ChatManager controller = new ChatManager();
singleton = controller;
return controller;
}
}
return singleton;
}
/**
* Create a new instance of ChatManager.
*/
public ChatManager() {
private ChatManager() {
chatContainer = new ChatContainer();
// Add a Message Handler
@ -80,6 +111,9 @@ public class ChatManager implements MessageEventNotificationListener {
}
}
}, new PacketTypeFilter(Message.class));
// Start timeout
checkRoomsForTimeout();
}
@ -383,5 +417,51 @@ public class ChatManager implements MessageEventNotificationListener {
});
}
/**
* Checks every room every 30 seconds to see if it's timed out.
*/
private void checkRoomsForTimeout() {
int delay = 30000; // delay for 5 sec.
int period = 30000; // repeat every sec.
Timer timer = new Timer();
timer.scheduleAtFixedRate(new TimerTask() {
public void run() {
for (ChatRoom chatRoom : getChatContainer().getChatRooms()) {
long lastActivity = chatRoom.getLastActivity();
long currentTime = System.currentTimeMillis();
long diff = currentTime - lastActivity;
int minutes = (int)(diff / (60 * 1000F));
LocalPreferences pref = SettingsManager.getLocalPreferences();
int timeoutMinutes = pref.getChatLengthDefaultTimeout();
try {
ChatRoom activeChatRoom = getChatContainer().getActiveChatRoom();
if(activeChatRoom == chatRoom){
continue;
}
}
catch (ChatRoomNotFoundException e) {
}
if (timeoutMinutes <= minutes) {
// Turn tab gray
int index = getChatContainer().indexOfComponent(chatRoom);
SparkTab tab = getChatContainer().getTabAt(index);
final JLabel titleLabel = tab.getTitleLabel();
Font oldFont = titleLabel.getFont();
Font newFont = new Font(oldFont.getFontName(), Font.BOLD, oldFont.getSize());
titleLabel.setFont(newFont);
titleLabel.setForeground(Color.gray);
titleLabel.validate();
titleLabel.repaint();
}
}
}
}, delay, period);
}
}

View File

@ -169,7 +169,7 @@ public final class SparkManager {
*/
public static ChatManager getChatManager() {
if (chatManager == null) {
chatManager = new ChatManager();
chatManager = ChatManager.getInstance();
}
return chatManager;
}

View File

@ -34,18 +34,6 @@ import org.jivesoftware.spark.util.SwingWorker;
import org.jivesoftware.spark.util.log.Log;
import org.jivesoftware.sparkimpl.settings.local.SettingsManager;
import javax.swing.AbstractAction;
import javax.swing.BorderFactory;
import javax.swing.Icon;
import javax.swing.JComponent;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.KeyStroke;
import javax.swing.SwingUtilities;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;
import java.awt.Color;
import java.awt.Component;
import java.awt.Dimension;
@ -63,6 +51,18 @@ import java.util.Iterator;
import java.util.List;
import java.util.Map;
import javax.swing.AbstractAction;
import javax.swing.BorderFactory;
import javax.swing.Icon;
import javax.swing.JComponent;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.KeyStroke;
import javax.swing.SwingUtilities;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;
/**
* Contains all <code>ChatRoom</code> objects within Spark.
*
@ -72,9 +72,11 @@ public class ChatContainer extends SparkTabbedPane implements MessageListener, C
/**
* List of all ChatRoom Listeners.
*/
private final List chatRoomListeners = new ArrayList();
private final List<ChatRoomListener> chatRoomListeners = new ArrayList<ChatRoomListener>();
private final List<ChatRoom> chatRoomList = new ArrayList<ChatRoom>();
private final Map presenceMap = new HashMap();
private final Map<String, PacketListener> presenceMap = new HashMap<String, PacketListener>();
private static final String WELCOME_TITLE = SparkRes.getString(SparkRes.WELCOME);
@ -277,7 +279,6 @@ public class ChatContainer extends SparkTabbedPane implements MessageListener, C
// Change tab icon
if (chatRoom instanceof ChatRoomImpl) {
StatusItem statusItem = SparkManager.getWorkspace().getStatusBar().getItemFromPresence(p);
Roster roster = SparkManager.getConnection().getRoster();
Icon tabIcon = null;
if (statusItem == null && p == null) {
tabIcon = SparkRes.getImageIcon(SparkRes.CLEAR_BALL_ICON);
@ -885,10 +886,9 @@ public class ChatContainer extends SparkTabbedPane implements MessageListener, C
final int index = indexOfComponent(room);
if (index != -1) {
SparkTab tab = getTabAt(index);
Font font = tab.getTitleLabel().getFont();
final JLabel titleLabel = tab.getTitleLabel();
Font newFont = font.deriveFont(Font.BOLD);
Font oldFont = titleLabel.getFont();
Font newFont = new Font(oldFont.getFontName(), Font.BOLD, oldFont.getSize());
titleLabel.setFont(newFont);
titleLabel.setForeground(Color.red);
}

View File

@ -25,6 +25,25 @@ import org.jivesoftware.spark.util.log.Log;
import org.jivesoftware.sparkimpl.preference.chat.ChatPreference;
import org.jivesoftware.sparkimpl.preference.chat.ChatPreferences;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Component;
import java.awt.FlowLayout;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.Insets;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Date;
import java.util.Iterator;
import java.util.List;
import javax.swing.AbstractAction;
import javax.swing.Action;
import javax.swing.Icon;
@ -45,25 +64,6 @@ import javax.swing.event.DocumentListener;
import javax.swing.text.BadLocationException;
import javax.swing.text.Document;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Component;
import java.awt.FlowLayout;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.Insets;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Date;
import java.util.Iterator;
import java.util.List;
/**
* The base implementation of all ChatRoom conversations. You would implement this class to have most types of Chat.
*/
@ -869,6 +869,14 @@ public abstract class ChatRoom extends BackgroundPanel implements ActionListener
public JSplitPane getVerticalSlipPane() {
return verticalSplit;
}
/**
* Implementation of this method should return the last time this chat room
* sent or recieved a message.
*
* @return the last time (in system milliseconds) that the room last recieved a message.
*/
public abstract long getLastActivity();
}

View File

@ -39,11 +39,6 @@ import org.jivesoftware.spark.util.SwingWorker;
import org.jivesoftware.spark.util.log.Log;
import org.jivesoftware.sparkimpl.profile.VCardManager;
import javax.swing.Icon;
import javax.swing.SwingUtilities;
import javax.swing.Timer;
import javax.swing.event.DocumentEvent;
import java.awt.GridBagConstraints;
import java.awt.Insets;
import java.awt.event.ActionEvent;
@ -55,6 +50,11 @@ import java.util.Date;
import java.util.Iterator;
import java.util.List;
import javax.swing.Icon;
import javax.swing.SwingUtilities;
import javax.swing.Timer;
import javax.swing.event.DocumentEvent;
/**
* This is the Person to Person implementation of <code>ChatRoom</code>
* This room only allows for 1 to 1 conversations.
@ -85,6 +85,8 @@ public class ChatRoomImpl extends ChatRoom {
private boolean sendTypingNotification;
private String threadID;
private long lastActivity;
/**
* Constructs a 1-to-1 ChatRoom.
@ -231,6 +233,8 @@ public class ChatRoomImpl extends ChatRoom {
};
worker.start();
lastActivity = System.currentTimeMillis();
}
private void scrollOnTimer() {
@ -341,6 +345,8 @@ public class ChatRoomImpl extends ChatRoom {
catch (Exception ex) {
Log.error("Error sending message", ex);
}
lastActivity = System.currentTimeMillis();
}
public String getRoomname() {
@ -421,6 +427,8 @@ public class ChatRoomImpl extends ChatRoom {
}
}
else if (packet instanceof Message) {
lastActivity = System.currentTimeMillis();
// Do something with the incoming packet here.
final Message message = (Message)packet;
if (message.getError() != null) {
@ -571,5 +579,9 @@ public class ChatRoomImpl extends ChatRoom {
}
public long getLastActivity() {
return lastActivity;
}
}

View File

@ -88,6 +88,8 @@ public final class GroupChatRoom extends ChatRoom {
private ConferenceRoomInfo roomInfo;
private long lastActivity;
/**
* Creates a GroupChatRoom from a <code>MultiUserChat</code>.
*
@ -219,6 +221,9 @@ public final class GroupChatRoom extends ChatRoom {
messageManager = new ChatRoomMessageManager();
// set last activity to be right now
lastActivity = System.currentTimeMillis();
}
/**
@ -291,6 +296,8 @@ public final class GroupChatRoom extends ChatRoom {
getChatInputEditor().setCaretPosition(0);
getChatInputEditor().requestFocusInWindow();
scrollToBottom();
lastActivity = System.currentTimeMillis();
}
/**
@ -329,6 +336,8 @@ public final class GroupChatRoom extends ChatRoom {
getChatInputEditor().setCaretPosition(0);
getChatInputEditor().requestFocusInWindow();
scrollToBottom();
lastActivity = System.currentTimeMillis();
}
/**
@ -497,6 +506,9 @@ public final class GroupChatRoom extends ChatRoom {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
handleMessagePacket(packet);
// Set last activity
lastActivity = System.currentTimeMillis();
}
});
@ -967,4 +979,8 @@ public final class GroupChatRoom extends ChatRoom {
public ConferenceRoomInfo getConferenceRoomInfo() {
return roomInfo;
}
public long getLastActivity(){
return lastActivity;
}
}

View File

@ -84,6 +84,8 @@ public class ChatPreference implements Preference {
panel.setSpellCheckerOn(spellCheckerOn);
panel.setGroupChatNotificationsOn(notificationsOn);
panel.setChatHistoryHidden(chatHistoryHidden);
panel.setChatTimeoutTime(localPreferences.getChatLengthDefaultTimeout());
}
};
@ -97,6 +99,7 @@ public class ChatPreference implements Preference {
pref.setSpellCheckerEnabled(panel.isSpellCheckerOn());
pref.setChatRoomNotifications(panel.isGroupChatNotificationsOn());
pref.setChatHistoryEnabled(!panel.isChatHistoryHidden());
pref.setChatLengthDefaultTimeout(panel.getChatTimeoutTime());
SettingsManager.saveSettings();

View File

@ -27,6 +27,7 @@ import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JPasswordField;
import javax.swing.JTextField;
/**
* The Preference UI used to handle changing of Chat Preferences.
@ -45,6 +46,8 @@ public class ChatPreferencePanel extends JPanel implements ActionListener {
private JLabel passwordLabel = new JLabel();
private JLabel confirmationPasswordLabel = new JLabel();
private JCheckBox hideChatHistory = new JCheckBox();
private JTextField chatTimeoutField = new JTextField();
/**
* Constructor invokes UI setup.
@ -79,6 +82,12 @@ public class ChatPreferencePanel extends JPanel implements ActionListener {
chatWindowPanel.add(spellCheckBox, new GridBagConstraints(0, 1, 2, 1, 1.0, 1.0, GridBagConstraints.NORTHWEST, GridBagConstraints.NONE, new Insets(5, 5, 5, 5), 0, 0));
chatWindowPanel.add(groupChatNotificationBox, new GridBagConstraints(0, 2, 2, 1, 1.0, 1.0, GridBagConstraints.NORTHWEST, GridBagConstraints.NONE, new Insets(5, 5, 5, 5), 0, 0));
chatWindowPanel.add(hideChatHistory, new GridBagConstraints(0, 3, 2, 1, 1.0, 1.0, GridBagConstraints.NORTHWEST, GridBagConstraints.NONE, new Insets(5, 5, 5, 5), 0, 0));
chatWindowPanel.add(hideChatHistory, new GridBagConstraints(0, 3, 2, 1, 1.0, 1.0, GridBagConstraints.NORTHWEST, GridBagConstraints.NONE, new Insets(5, 5, 5, 5), 0, 0));
JLabel chatTimeoutLabel = new JLabel();
ResourceUtils.resLabel(chatTimeoutLabel, chatTimeoutField, "&Inactive chats expire after (min):");
chatWindowPanel.add(chatTimeoutLabel, new GridBagConstraints(0, 4, 1, 1, 0.0, 0.0, GridBagConstraints.WEST, GridBagConstraints.NONE, new Insets(5, 5, 5, 5), 0, 0));
chatWindowPanel.add(chatTimeoutField, new GridBagConstraints(1, 4, 2, 1, 1.0, 0.0, GridBagConstraints.WEST, GridBagConstraints.NONE, new Insets(5, 5, 5, 5), 50, 0));
generalPanel.add(passwordLabel, new GridBagConstraints(0, 1, 1, 1, 0.0, 0.0, GridBagConstraints.NORTHWEST, GridBagConstraints.NONE, new Insets(5, 5, 5, 5), 0, 0));
@ -150,6 +159,19 @@ public class ChatPreferencePanel extends JPanel implements ActionListener {
return hideChatHistory.isSelected();
}
public void setChatTimeoutTime(int time) {
chatTimeoutField.setText(Integer.toString(time));
}
public int getChatTimeoutTime() {
try {
return Integer.parseInt(chatTimeoutField.getText());
}
catch (NumberFormatException e) {
return 15;
}
}
public void actionPerformed(ActionEvent actionEvent) {
if (hideChatHistory.isSelected()) {
int ok = JOptionPane.showConfirmDialog(this, "Delete all previous history?", "Delete Confirmation", JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE);

View File

@ -407,6 +407,14 @@ public class LocalPreferences {
props.setProperty("fileTransferTimeout", Integer.toString(minutes));
}
public void setChatLengthDefaultTimeout(int minutes) {
props.setProperty("defaultChatLengthTimeout", Integer.toString(minutes));
}
public int getChatLengthDefaultTimeout() {
return Integer.parseInt(props.getProperty("defaultChatLengthTimeout", "15"));
}
private boolean getBoolean(String property, boolean defaultValue) {
return Boolean.parseBoolean(props.getProperty(property, Boolean.toString(defaultValue)));
}