SPARK-1072 - Add an option to make chat window always stay on top

git-svn-id: http://svn.igniterealtime.org/svn/repos/spark/trunk@11089 b35dd754-fafc-0310-a699-88a17e54d16e
This commit is contained in:
Michael Will
2009-06-26 19:09:16 +00:00
committed by michael.will
parent 74858c23ba
commit d803081453
5 changed files with 72 additions and 15 deletions

View File

@ -378,18 +378,18 @@ public final class MainWindow extends ChatFrame implements ActionListener {
public void actionPerformed(ActionEvent actionEvent) { public void actionPerformed(ActionEvent actionEvent) {
if (alwaysOnTopItem.isSelected()) if (alwaysOnTopItem.isSelected())
{ {
SettingsManager.getLocalPreferences().setAlwaysOnTop(true); SettingsManager.getLocalPreferences().setMainWindowAlwaysOnTop(true);
MainWindow.getInstance().setAlwaysOnTop(true); MainWindow.getInstance().setAlwaysOnTop(true);
} }
else else
{ {
SettingsManager.getLocalPreferences().setAlwaysOnTop(false); SettingsManager.getLocalPreferences().setMainWindowAlwaysOnTop(false);
MainWindow.getInstance().setAlwaysOnTop(false); MainWindow.getInstance().setAlwaysOnTop(false);
} }
} }
}); });
if (SettingsManager.getLocalPreferences().isAlwaysOnTop()) if (SettingsManager.getLocalPreferences().isMainWindowAlwaysOnTop())
{ {
alwaysOnTopItem.setSelected(true); alwaysOnTopItem.setSelected(true);
this.setAlwaysOnTop(true); this.setAlwaysOnTop(true);

View File

@ -10,36 +10,80 @@
package org.jivesoftware.spark.ui; package org.jivesoftware.spark.ui;
import org.jivesoftware.MainWindow;
import org.jivesoftware.Spark;
import org.jivesoftware.spark.SparkManager;
import org.jivesoftware.spark.util.GraphicUtils;
import org.jivesoftware.sparkimpl.plugin.layout.LayoutSettings;
import org.jivesoftware.sparkimpl.plugin.layout.LayoutSettingsManager;
import java.awt.BorderLayout; import java.awt.BorderLayout;
import java.awt.Frame; import java.awt.Frame;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.ComponentAdapter; import java.awt.event.ComponentAdapter;
import java.awt.event.ComponentEvent; import java.awt.event.ComponentEvent;
import java.awt.event.WindowAdapter; import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent; import java.awt.event.WindowEvent;
import java.awt.event.WindowFocusListener; import java.awt.event.WindowFocusListener;
import javax.swing.JCheckBoxMenuItem;
import javax.swing.JFrame; import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import org.jivesoftware.MainWindow;
import org.jivesoftware.Spark;
import org.jivesoftware.resource.Res;
import org.jivesoftware.spark.SparkManager;
import org.jivesoftware.spark.util.GraphicUtils;
import org.jivesoftware.spark.util.ResourceUtils;
import org.jivesoftware.sparkimpl.plugin.layout.LayoutSettings;
import org.jivesoftware.sparkimpl.plugin.layout.LayoutSettingsManager;
import org.jivesoftware.sparkimpl.settings.local.SettingsManager;
/** /**
* The Window used to display the ChatRoom container. * The Window used to display the ChatRoom container.
*/ */
public class ChatFrame extends JFrame implements WindowFocusListener { public class ChatFrame extends JFrame implements WindowFocusListener {
private static final long serialVersionUID = -7789413067818105293L;
private long inactiveTime; private long inactiveTime;
private boolean focused; private boolean focused;
private JMenuBar chatWindowBar;
private JMenu optionMenu;
private JCheckBoxMenuItem alwaysOnTopItem;
private ChatFrame chatFrame;
/** /**
* Creates default ChatFrame. * Creates default ChatFrame.
*/ */
public ChatFrame() { public ChatFrame() {
chatFrame = this;
chatWindowBar = new JMenuBar();
optionMenu = new JMenu();
ResourceUtils.resButton(optionMenu, Res.getString("menuitem.chatframe.option"));
alwaysOnTopItem = new JCheckBoxMenuItem();
ResourceUtils.resButton(alwaysOnTopItem, Res.getString("menuitem.always.on.top"));
alwaysOnTopItem.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent actionEvent) {
if (alwaysOnTopItem.isSelected())
{
SettingsManager.getLocalPreferences().setChatWindowAlwaysOnTop(true);
chatFrame.setAlwaysOnTop(true);
}
else
{
SettingsManager.getLocalPreferences().setChatWindowAlwaysOnTop(false);
chatFrame.setAlwaysOnTop(false);
}
}
});
if (SettingsManager.getLocalPreferences().isChatWindowAlwaysOnTop())
{
alwaysOnTopItem.setSelected(true);
chatFrame.setAlwaysOnTop(true);
}
optionMenu.add(alwaysOnTopItem);
chatWindowBar.add(optionMenu);
setJMenuBar(chatWindowBar);
setIconImage(SparkManager.getApplicationImage().getImage()); setIconImage(SparkManager.getApplicationImage().getImage());
getContentPane().setLayout(new BorderLayout()); getContentPane().setLayout(new BorderLayout());

View File

@ -817,14 +817,23 @@ public class LocalPreferences {
return props.getProperty("videoDevice",null); return props.getProperty("videoDevice",null);
} }
public boolean isAlwaysOnTop() { public boolean isMainWindowAlwaysOnTop() {
return getBoolean("alwaysOnTop", false); return getBoolean("alwaysOnTop", false);
} }
public void setAlwaysOnTop(boolean onTop) { public void setMainWindowAlwaysOnTop(boolean onTop) {
setBoolean("alwaysOnTop", onTop); setBoolean("MainWindowAlwaysOnTop", onTop);
} }
public boolean isChatWindowAlwaysOnTop() {
return getBoolean("ChatFrameAlwaysOnTop", false);
}
public void setChatWindowAlwaysOnTop(boolean onTop) {
setBoolean("ChatWindowAlwaysOnTop", onTop);
}
private boolean getBoolean(String property, boolean defaultValue) { private boolean getBoolean(String property, boolean defaultValue) {
return Boolean.parseBoolean(props.getProperty(property, Boolean return Boolean.parseBoolean(props.getProperty(property, Boolean
.toString(defaultValue))); .toString(defaultValue)));

View File

@ -529,6 +529,8 @@ menuitem.create.room = Create or Join Room
menuitem.expand.all.groups = Expand all Groups menuitem.expand.all.groups = Expand all Groups
menuitem.collapse.all.groups = Collapse all Groups menuitem.collapse.all.groups = Collapse all Groups
menuitem.chatframe.option = Options
message = Message message = Message
message.account.create = Create a new chat account. message.account.create = Create a new chat account.
message.account.created = New account has been created. message.account.created = New account has been created.

View File

@ -709,6 +709,8 @@ menuitem.create.room = Raum erstellen oder beitreten
menuitem.expand.all.groups = <EFBFBD>ffne alle Gruppen menuitem.expand.all.groups = <EFBFBD>ffne alle Gruppen
menuitem.collapse.all.groups = Schlie<EFBFBD>e alle Gruppen menuitem.collapse.all.groups = Schlie<EFBFBD>e alle Gruppen
menuitem.chatframe.option = Einstellungen
tree.conference.services = Konferenzen tree.conference.services = Konferenzen
tree.users.in.room = Teilnehmer im Raum tree.users.in.room = Teilnehmer im Raum