mirror of
https://github.com/igniterealtime/Spark.git
synced 2025-10-29 19:57:28 +00:00
Updating plugin framework.
git-svn-id: http://svn.igniterealtime.org/svn/repos/spark/trunk@4722 b35dd754-fafc-0310-a699-88a17e54d16e
This commit is contained in:
parent
2468ef6ea7
commit
a73ae60224
@ -22,8 +22,6 @@ import org.jivesoftware.spark.plugin.PublicPlugin;
|
||||
import org.jivesoftware.spark.util.URLFileSystem;
|
||||
import org.jivesoftware.spark.util.log.Log;
|
||||
|
||||
import javax.swing.SwingUtilities;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.FileOutputStream;
|
||||
import java.io.FilenameFilter;
|
||||
@ -43,6 +41,8 @@ import java.util.jar.JarEntry;
|
||||
import java.util.jar.JarFile;
|
||||
import java.util.zip.ZipFile;
|
||||
|
||||
import javax.swing.SwingUtilities;
|
||||
|
||||
/**
|
||||
* This manager is responsible for the loading of all Plugins and Workspaces within Spark environment.
|
||||
*
|
||||
@ -83,6 +83,18 @@ public class PluginManager implements MainWindowListener {
|
||||
}
|
||||
|
||||
private PluginManager() {
|
||||
try {
|
||||
PLUGINS_DIRECTORY = new File(Spark.getBinDirectory().getParentFile(), "plugins").getCanonicalFile();
|
||||
}
|
||||
catch (IOException e) {
|
||||
Log.error(e);
|
||||
}
|
||||
|
||||
// Copy Files over if not on Windows. This is a workaround for installation issues.
|
||||
if (!Spark.isWindows()) {
|
||||
copyFiles();
|
||||
}
|
||||
|
||||
SparkManager.getMainWindow().addMainWindowListener(this);
|
||||
|
||||
// Create the extension directory if one does not exist.
|
||||
@ -91,6 +103,30 @@ public class PluginManager implements MainWindowListener {
|
||||
}
|
||||
}
|
||||
|
||||
private void copyFiles() {
|
||||
// Current Plugin directory
|
||||
File newPlugins = new File(Spark.getLogDirectory().getParentFile(), "plugins").getAbsoluteFile();
|
||||
newPlugins.mkdirs();
|
||||
|
||||
File[] files = PLUGINS_DIRECTORY.listFiles();
|
||||
final int no = files != null ? files.length : 0;
|
||||
for (int i = 0; i < no; i++) {
|
||||
File file = files[i];
|
||||
if (file.isFile()) {
|
||||
// Copy over
|
||||
File newFile = new File(newPlugins, file.getName());
|
||||
try {
|
||||
URLFileSystem.copy(file.toURL(), newFile);
|
||||
}
|
||||
catch (IOException e) {
|
||||
Log.error(e);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
PLUGINS_DIRECTORY = newPlugins;
|
||||
}
|
||||
|
||||
/**
|
||||
* Loads all {@link Plugin} from the agent plugins.xml and extension lib.
|
||||
*/
|
||||
|
||||
@ -63,23 +63,23 @@ public class ChatPreference implements Preference {
|
||||
|
||||
public void load() {
|
||||
SwingWorker thread = new SwingWorker() {
|
||||
LocalPreferences pref;
|
||||
LocalPreferences localPreferences;
|
||||
|
||||
public Object construct() {
|
||||
pref = SettingsManager.getLocalPreferences();
|
||||
return pref;
|
||||
localPreferences = SettingsManager.getLocalPreferences();
|
||||
return localPreferences;
|
||||
}
|
||||
|
||||
public void finished() {
|
||||
String nickname = pref.getDefaultNickname();
|
||||
String nickname = localPreferences.getDefaultNickname();
|
||||
if (nickname == null) {
|
||||
nickname = SparkManager.getSessionManager().getUsername();
|
||||
}
|
||||
|
||||
boolean showTime = pref.isTimeDisplayedInChat();
|
||||
boolean spellCheckerOn = pref.isSpellCheckerEnabled();
|
||||
boolean notificationsOn = pref.isChatRoomNotificationsOn();
|
||||
boolean chatHistoryHidden = !pref.isChatHistoryEnabled();
|
||||
boolean showTime = localPreferences.isTimeDisplayedInChat();
|
||||
boolean spellCheckerOn = localPreferences.isSpellCheckerEnabled();
|
||||
boolean notificationsOn = localPreferences.isChatRoomNotificationsOn();
|
||||
boolean chatHistoryHidden = !localPreferences.isChatHistoryEnabled();
|
||||
panel.setShowTime(showTime);
|
||||
panel.setSpellCheckerOn(spellCheckerOn);
|
||||
panel.setGroupChatNotificationsOn(notificationsOn);
|
||||
|
||||
@ -13,6 +13,7 @@ package org.jivesoftware.sparkimpl.preference.chat;
|
||||
import org.jivesoftware.spark.SparkManager;
|
||||
import org.jivesoftware.spark.component.VerticalFlowLayout;
|
||||
import org.jivesoftware.spark.util.ResourceUtils;
|
||||
import org.jivesoftware.spark.util.ModelUtil;
|
||||
|
||||
import javax.swing.BorderFactory;
|
||||
import javax.swing.JCheckBox;
|
||||
@ -20,6 +21,7 @@ import javax.swing.JLabel;
|
||||
import javax.swing.JOptionPane;
|
||||
import javax.swing.JPanel;
|
||||
import javax.swing.JPasswordField;
|
||||
import javax.swing.JTextField;
|
||||
|
||||
import java.awt.GridBagConstraints;
|
||||
import java.awt.GridBagLayout;
|
||||
@ -46,6 +48,9 @@ public class ChatPreferencePanel extends JPanel implements ActionListener {
|
||||
private JLabel confirmationPasswordLabel = new JLabel();
|
||||
private JCheckBox hideChatHistory = new JCheckBox();
|
||||
|
||||
private JTextField fileTransferTimeoutField = new JTextField();
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Constructor invokes UI setup.
|
||||
@ -82,6 +87,13 @@ public class ChatPreferencePanel extends JPanel implements ActionListener {
|
||||
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));
|
||||
|
||||
|
||||
final JLabel label = new JLabel();
|
||||
ResourceUtils.resLabel(label, fileTransferTimeoutField, "&Transfer Timeout(min):");
|
||||
|
||||
chatWindowPanel.add(label, new GridBagConstraints(0, 4, 1, 1, 0.0, 0.0, GridBagConstraints.NORTHWEST, GridBagConstraints.NONE, new Insets(5, 5, 5, 5), 0, 0));
|
||||
chatWindowPanel.add(fileTransferTimeoutField, new GridBagConstraints(1, 4, 1, 1, 0.0, 1.0, GridBagConstraints.NORTHWEST, GridBagConstraints.HORIZONTAL, new Insets(5, 5, 5, 5), 100, 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));
|
||||
generalPanel.add(passwordField, new GridBagConstraints(1, 1, 1, 1, 1.0, 0.0, GridBagConstraints.NORTHWEST, GridBagConstraints.NONE, new Insets(5, 5, 5, 5), 100, 0));
|
||||
generalPanel.add(confirmationPasswordLabel, new GridBagConstraints(0, 2, 1, 1, 0.0, 0.0, GridBagConstraints.NORTHWEST, GridBagConstraints.NONE, new Insets(5, 5, 5, 5), 0, 0));
|
||||
@ -151,6 +163,19 @@ public class ChatPreferencePanel extends JPanel implements ActionListener {
|
||||
return hideChatHistory.isSelected();
|
||||
}
|
||||
|
||||
public void setFileTransferTimeout(int timeout){
|
||||
fileTransferTimeoutField.setText(Integer.toString(timeout));
|
||||
}
|
||||
|
||||
/*
|
||||
public int getFileTransferTimeout(){
|
||||
String value = fileTransferTimeoutField.getText();
|
||||
if(ModelUtil.hasLength(value)){
|
||||
|
||||
}
|
||||
}
|
||||
*/
|
||||
|
||||
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);
|
||||
|
||||
@ -394,6 +394,14 @@ public class LocalPreferences {
|
||||
setBoolean("showEmptyGroups", shown);
|
||||
}
|
||||
|
||||
public int getFileTransferTimeout() {
|
||||
return Integer.parseInt(props.getProperty("fileTransferTimeout", "1"));
|
||||
}
|
||||
|
||||
public void setFileTransferTimeout(int minutes) {
|
||||
props.setProperty("fileTransferTimeout", Integer.toString(minutes));
|
||||
}
|
||||
|
||||
private boolean getBoolean(String property, boolean defaultValue) {
|
||||
return Boolean.parseBoolean(props.getProperty(property, Boolean.toString(defaultValue)));
|
||||
}
|
||||
@ -401,6 +409,4 @@ public class LocalPreferences {
|
||||
private void setBoolean(String property, boolean value) {
|
||||
props.setProperty(property, Boolean.toString(value));
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user