mirror of
https://github.com/igniterealtime/Spark.git
synced 2025-12-01 12:27:58 +00:00
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:
@ -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>
|
||||
|
||||
@ -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>
|
||||
|
||||
@ -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);
|
||||
}
|
||||
|
||||
}
|
||||
@ -169,7 +169,7 @@ public final class SparkManager {
|
||||
*/
|
||||
public static ChatManager getChatManager() {
|
||||
if (chatManager == null) {
|
||||
chatManager = new ChatManager();
|
||||
chatManager = ChatManager.getInstance();
|
||||
}
|
||||
return chatManager;
|
||||
}
|
||||
|
||||
@ -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);
|
||||
}
|
||||
|
||||
@ -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();
|
||||
}
|
||||
|
||||
|
||||
|
||||
@ -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;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
@ -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();
|
||||
|
||||
|
||||
@ -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);
|
||||
|
||||
@ -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)));
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user