📄 languagesettingspanel.java
字号:
package openicq.gui;
import java.awt.BorderLayout;
import java.util.ArrayList;
import javax.swing.*;
import javax.swing.border.Border;
import openicq.Start;
import openicq.data.Default;
import openicq.data.Resource;
import org.javalib.dynamic.DynLoader;
import org.javalib.dynamic.localize.Localization;
import org.javalib.gui.IconListCellRenderer;
import org.javalib.gui.model.SettingsDisplayPanel;
import org.javalib.io.CryptFile;
/**
* The <code>LanguageSettingsPanel</code> class contains the panel with the
* language settings.
* @author Hansgeorg Schwibbe
* @copyright 2004
*/
public class LanguageSettingsPanel extends SettingsDisplayPanel
{
private SettingsDialog settingsDialog;
private JList jListLanguage = new JList();
private JScrollPane jScrollPaneLang = new JScrollPane();
private IconListCellRenderer iconRenderer;
/**
* Initializes a new instance of the class <code>LanguageSettingsPanel</code>.
* @param parent the parent dialog
*/
public LanguageSettingsPanel(JDialog parent)
{
settingsDialog = (SettingsDialog) parent;
jListLanguage.setCellRenderer(iconRenderer);
Border innerBorder = BorderFactory.createEmptyBorder(12, 12, 12, 12);
Border outerBorder = BorderFactory.createEtchedBorder();
jScrollPaneLang.setBorder(BorderFactory.createCompoundBorder(innerBorder,
outerBorder));
jScrollPaneLang.getViewport().add(jListLanguage, BorderLayout.CENTER);
this.setLayout(new BorderLayout());
this.setBorder(BorderFactory.createLoweredBevelBorder());
this.add(jScrollPaneLang);
}
/**
* (non-Javadoc)
* @see org.javalib.gui.model.SettingsDisplayPanel#getContinueWithoutSavingMessage()
*/
public String getContinueWithoutSavingMessage()
{
return ((String[]) SettingsDialog.localized.get("warningMessages"))[0]
+ "\n"
+ ((String[]) SettingsDialog.localized.get("questionMessages"))[0];
}
/**
* (non-Javadoc)
* @see org.javalib.gui.model.SettingsDisplayPanel#getContinueWithoutSavingTitle()
*/
public String getContinueWithoutSavingTitle()
{
return ((String[]) SettingsDialog.localized.get("messageTitles"))[2];
}
/**
* (non-Javadoc)
* @see org.javalib.gui.model.SettingsDisplayPanel#getListIconPath()
*/
public String getListIconPath()
{
return Resource.ICON_SOURCE_SETTINGS[2];
}
/**
* (non-Javadoc)
* @see org.javalib.gui.model.SettingsDisplayPanel#getListName()
*/
public String getListName()
{
return ((String[]) SettingsDialog.localized.get("settingsDialogList"))[2];
}
/**
* (non-Javadoc)
* @see org.javalib.gui.model.SettingsDisplayPanel#getSaveButtonText()
*/
public String getSaveButtonText()
{
return ((String[]) SettingsDialog.localized.get("stdButtons"))[2] + " ("
+ ((String[]) SettingsDialog.localized.get("settingsDialogList"))[2]
+ ")";
}
/**
* (non-Javadoc)
* @see org.javalib.gui.model.SettingsDisplayPanel#getSaveSettingsErrorTitle()
*/
public String getSaveSettingsErrorTitle()
{
return ((String[]) SettingsDialog.localized.get("messageTitles"))[0];
}
/**
* (non-Javadoc)
* @see org.javalib.gui.model.SettingsDisplayPanel#hasChanged()
*/
public boolean hasChanged()
{
synchronized (Start.env)
{
if (jListLanguage.getSelectedIndex() >= 0
&& !jListLanguage.getSelectedValue()
.equals(Start.env.getLocalizationName()))
{
return true;
}
}
return false;
}
/**
* (non-Javadoc)
* @see org.javalib.gui.model.SettingsDisplayPanel#loadSettings()
*/
public void loadSettings()
{
String[] classnames = new String[] {};
try
{
classnames = DynLoader.listClasses(Resource.FOLDER_NAME_LANGUAGE_CLASSES);
}
catch (Exception ex)
{
System.err.println(this.getClass().getName() + ": " + ex.toString());
}
jListLanguage.removeAll();
ArrayList listData = new ArrayList();
ArrayList iconSources = new ArrayList();
for (int index = 0; index < classnames.length; index++)
{
listData.add(classnames[index]);
iconSources.add(Resource.FOLDER_NAME_LANGUAGE_ICONS + "/"
+ classnames[index] + ".png");
}
IconListCellRenderer renderer;
renderer = new IconListCellRenderer(iconSources.toArray());
jListLanguage.setListData(listData.toArray());
jListLanguage.setCellRenderer(renderer);
synchronized (Start.env)
{
jListLanguage.setSelectedValue(Start.env.getLocalizationName(), true);
}
}
/**
* (non-Javadoc)
* @see org.javalib.gui.model.SettingsDisplayPanel#saveSettings()
*/
public void saveSettings() throws Exception
{
if (jListLanguage.getSelectedIndex() >= 0)
{
try
{
MainFrame mainFrame = settingsDialog.mainFrame;
// Save the language settings
Object[] fileData = new Object[]
{ Resource.FOLDER_NAME_LANGUAGE_CLASSES + "/"
+ jListLanguage.getSelectedValue() + ".class"
};
synchronized (Start.env)
{
CryptFile.write(Default.FOLDER_NAME_HOME + "/"
+ Start.env.getOwnContact().getContactId() + "/"
+ Default.FILE_NAME_LANGUAGE, fileData);
// Set the language
String path = String.valueOf(fileData[0]);
Start.env.setLocalization(new Localization(path, "language"));
mainFrame.ownDetailsDialog.localize();
mainFrame.userDetailsDialog.localize();
mainFrame.contactDialog.localize();
mainFrame.infoDialog.localize();
int size = mainFrame.contactPanel.listChatFrames.size();
for (int index = 0; index < size; index++)
{
((ChatFrame) mainFrame.contactPanel.listChatFrames.get(index)).localize();
}
mainFrame.localize();
mainFrame.setMinimumWindowSize();
settingsDialog.localize();
settingsDialog.visibilityPanel.loadSettings();
}
}
catch (Exception ex)
{
String msg;
System.out.println(111);
msg = ((String[]) SettingsDialog.localized.get("errorMessages"))[18];
throw new Exception(msg);
}
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -