📄 encodingcomboboxmodel.java
字号:
* Defines the selected index for this encoding model.
*
* @param index the selected index or -1 to clear the selection.
* @throws IllegalArgumentException if the given index is invalid.
*/
public void setSelectedIndex(final int index)
{
if (index == -1)
{
selectedIndex = -1;
selectedObject = null;
return;
}
if (index < -1 || index >= getSize())
{
throw new IllegalArgumentException("Index is invalid.");
}
selectedIndex = index;
selectedObject = getElementAt(index);
}
/**
* Returns the selected encoding.
*
* @return The encoding (name).
*/
public String getSelectedEncoding()
{
if (selectedIndex == -1)
{
return null;
}
final EncodingCarrier ec = (EncodingCarrier) encodings.get(selectedIndex);
return ec.getName();
}
/**
* Returns the selected item.
*
* @return The selected item or <code>null</code> if there is no selection
*/
public Object getSelectedItem()
{
return selectedObject;
}
/**
* Returns the length of the list.
*
* @return the length of the list
*/
public int getSize()
{
return encodings.size();
}
/**
* Returns the value at the specified index.
*
* @param index the requested index
*
* @return the value at <code>index</code>
*/
public Object getElementAt(final int index)
{
final EncodingCarrier ec = (EncodingCarrier) encodings.get(index);
return ec.getDisplayName();
}
/**
* Adds a listener to the list that's notified each time a change
* to the data model occurs.
*
* @param l the <code>ListDataListener</code> to be added
*/
public void addListDataListener(final ListDataListener l)
{
if (listDataListeners == null)
{
listDataListeners = new ArrayList(5);
}
listDataListeners.add(l);
}
/**
* Removes a listener from the list that's notified each time a
* change to the data model occurs.
*
* @param l the <code>ListDataListener</code> to be removed
*/
public void removeListDataListener(final ListDataListener l)
{
if (listDataListeners == null)
{
return;
}
listDataListeners.remove(l);
}
/**
* Initializes the known names for the default encodings. Not all encodings may
* be available on a specific platform, these encoding will be ignored later.
*
* @return the singleton instance of the initialized default encoding names
*/
private static Properties getDefaultEncodings()
{
if (defaultEncodings == null)
{
defaultEncodings = new Properties();
// basic encoding set, base encodings
defaultEncodings.put("ASCII", "American Standard Code for Information Interchange");
defaultEncodings.put("Cp1252", "Windows Latin-1");
defaultEncodings.put("ISO-8859-1", "Latin alphabet No. 1");
defaultEncodings.put("ISO-8859-15", "Latin alphabet No. 9, 'Euro' enabled");
defaultEncodings.put("UTF-8", "8 Bit UCS Transformation Format");
defaultEncodings.put("UTF-16", "16 Bit UCS Transformation Format");
// missing: UTF-16BE, UTF-16LE are no base need in EndUser environments
//extended encoding set, contained in lib/charsets.jar
defaultEncodings.put("Cp1250", "Windows Eastern Europe");
defaultEncodings.put("Cp1251", "Windows Cyrillic");
defaultEncodings.put("Cp1253", "Windows Greek");
defaultEncodings.put("Cp1254", "Windows Turkish");
defaultEncodings.put("Cp1255", "Windows Hebrew");
defaultEncodings.put("Cp1256", "Windows Arabic");
defaultEncodings.put("Cp1257", "Windows Baltic");
defaultEncodings.put("Cp1258", "Windows Vietnamese");
defaultEncodings.put("ISO-8859-2", "Latin alphabet No. 2");
defaultEncodings.put("ISO-8859-3", "Latin alphabet No. 3");
defaultEncodings.put("ISO-8859-4", "Latin alphabet No. 4");
defaultEncodings.put("ISO-8859-5", "Latin/Cyrillic Alphabet");
defaultEncodings.put("ISO-8859-6", "Latin/Arabic Alphabet");
defaultEncodings.put("ISO-8859-7", "Latin/Greek Alphabet");
defaultEncodings.put("ISO-8859-8", "Latin/Hebrew Alphabet");
defaultEncodings.put("ISO-8859-9", "Latin alphabet No. 5");
defaultEncodings.put("ISO-8859-13", "Latin alphabet No. 7");
defaultEncodings.put("MS932", "Windows Japanese");
defaultEncodings.put("EUC-JP", "JISX 0201, 0208 and 0212, EUC encoding Japanese");
defaultEncodings.put("EUC-JP-LINUX", "JISX 0201, 0208, EUC encoding Japanese");
defaultEncodings.put("SJIS", "Shift-JIS, Japanese");
defaultEncodings.put("ISO-2022-JP", "JIS X 0201, 0208, in ISO 2002 form, Japanese");
defaultEncodings.put("MS936", "Windows Simplified Chinese");
defaultEncodings.put("GB18030", "Simplified Chinese, PRC standard");
defaultEncodings.put("EUC_CN", "GB2312, EUC encoding, Simplified Chinese");
defaultEncodings.put("GB2312", "GB2312, EUC encoding, Simplified Chinese");
defaultEncodings.put("GBK", "GBK, Simplified Chinese");
defaultEncodings.put("ISCII91", "ISCII encoding of Indic scripts");
defaultEncodings.put("ISO-2022-CN-GB", "GB2312 in ISO 2022 CN form, Simplified Chinese");
defaultEncodings.put("MS949", "Windows Korean");
defaultEncodings.put("EUC_KR", "KS C 5601, EUC encoding, Korean");
defaultEncodings.put("ISO-2022-KR", "ISO 2022 KR, Korean");
defaultEncodings.put("MS950", "Windows Traditional Chinese");
defaultEncodings.put("EUC-TW", "CNS 11643 (Plane 1-3), EUC encoding, Traditional Chinese");
defaultEncodings.put("ISO-2022-CN-CNS",
"CNS 11643 in ISO 2022 CN form, Traditional Chinese");
defaultEncodings.put("Big5", "Big5, Traditional Chinese");
defaultEncodings.put("Big5-HKSCS", "Big5 with Hong Kong extensions, Traditional Chinese");
defaultEncodings.put("TIS-620", "TIS 620, Thai");
defaultEncodings.put("KOI8-R", "KOI8-R, Russian");
//extended encoding set, contained in lib/charsets.jar
defaultEncodings.put("Big5_Solaris",
"Big5 with seven additional Hanzi ideograph character mappings");
defaultEncodings.put("Cp037",
"USA, Canada (Bilingual, French), Netherlands, Portugal, Brazil, Australia");
defaultEncodings.put("Cp273", "IBM Austria, Germany");
defaultEncodings.put("Cp277", "IBM Denmark, Norway");
defaultEncodings.put("Cp278", "IBM Finland, Sweden");
defaultEncodings.put("Cp280", "IBM Italy");
defaultEncodings.put("Cp284", "IBM Catalan/Spain, Spanish Latin America");
defaultEncodings.put("Cp285", "IBM United Kingdom, Ireland");
defaultEncodings.put("Cp297", "IBM France");
defaultEncodings.put("Cp420", "IBM Arabic");
defaultEncodings.put("Cp424", "IBM Hebrew");
defaultEncodings.put("Cp437", "MS-DOS United States, Australia, New Zealand, South Africa");
defaultEncodings.put("Cp500", "EBCDIC 500V1");
defaultEncodings.put("Cp737", "PC Greek");
defaultEncodings.put("Cp775", "PC Baltik");
defaultEncodings.put("Cp838", "IBM Thailand extended SBCS");
defaultEncodings.put("Cp850", "MS-DOS Latin-1");
defaultEncodings.put("Cp852", "MS-DOS Latin 2");
defaultEncodings.put("Cp855", "IBM Cyrillic");
defaultEncodings.put("Cp856", "IBM Hebrew");
defaultEncodings.put("Cp857", "IBM Turkish");
defaultEncodings.put("Cp858", "MS-DOS Latin-1 with Euro character");
defaultEncodings.put("Cp860", "MS-DOS Portuguese");
defaultEncodings.put("Cp861", "MS-DOS Icelandic");
defaultEncodings.put("Cp862", "PC Hebrew");
defaultEncodings.put("Cp863", "MS-DOS Canadian French");
defaultEncodings.put("Cp864", "PC Arabic");
defaultEncodings.put("Cp865", "MS-DOS Nordic");
defaultEncodings.put("Cp866", "MS-DOS Russian");
defaultEncodings.put("Cp868", "MS-DOS Pakistan");
defaultEncodings.put("Cp869", "IBM Modern Greek");
defaultEncodings.put("Cp870", "IBM Multilingual Latin-2");
defaultEncodings.put("Cp871", "IBM Iceland");
defaultEncodings.put("Cp874", "IBM Thai");
defaultEncodings.put("Cp875", "IBM Greek");
defaultEncodings.put("Cp918", "IBM Pakistan (Urdu)");
defaultEncodings.put("Cp921", "IBM Lativa, Lithuania (AIX, DOS)");
defaultEncodings.put("Cp922", "IBM Estonia (AIX, DOS)");
defaultEncodings.put("Cp930",
"Japanese Katakana-Kanji mixed with 4370 UDC, superset of 5026");
defaultEncodings.put("Cp933", "Korean mixed with 1880 UDC, superset of 5029");
defaultEncodings.put("Cp935", "Simplified Chinese mixed with 1880 UDC, superset of 5031");
defaultEncodings.put("Cp937",
"Traditional Chinsese Hostmixed with 6204 UDC, superset of 5033");
defaultEncodings.put("Cp939", "Japanese Latin Kanji mixed with 4370 UDC, superset of 5035");
defaultEncodings.put("Cp942", "IBM OS/2 Japanese, superset of Cp932");
defaultEncodings.put("Cp942C", "Variant of Cp942: IBM OS/2 Japanese, superset of Cp932");
defaultEncodings.put("Cp943", "IBM OS/2 Japanese, superset of Cp932 and Shift-JIS");
defaultEncodings.put("Cp943C",
"Variant of Cp943: IBM OS/2 Japanese, superset of Cp932 and Shift-JIS");
defaultEncodings.put("Cp948", "IBM OS/2 Chinese (Taiwan) superset of Cp938");
defaultEncodings.put("Cp949", "PC Korean");
defaultEncodings.put("Cp949C", "Variant of Cp949: PC Korean");
defaultEncodings.put("Cp950", "PC Chinese (Hong Kong, Taiwan)");
defaultEncodings.put("Cp964", "AIX Chinese (Taiwan)");
defaultEncodings.put("Cp970", "AIX Korean");
defaultEncodings.put("Cp1006", "IBM AIX Parkistan (Urdu)");
defaultEncodings.put("Cp1025",
"IBM Multilingual Cyrillic: Bulgaria, Bosnia, Herzegovinia, Macedonia (FYR)");
defaultEncodings.put("Cp1026", "IBM Latin-5, Turkey");
defaultEncodings.put("Cp1046", "IBM Arabic Windows");
defaultEncodings.put("Cp1097", "IBM Iran (Farsi)/Persian");
defaultEncodings.put("Cp1098", "IBM Iran (Farsi)/Persian (PC)");
defaultEncodings.put("Cp1112", "IBM Lativa, Lithuania");
defaultEncodings.put("Cp1122", "IBM Estonia");
defaultEncodings.put("Cp1123", "IBM Ukraine");
defaultEncodings.put("Cp1124", "IBM AIX Ukraine");
defaultEncodings.put("Cp1140",
"USA, Canada (Bilingual, French), Netherlands, Portugal, Brazil, Australia (with Euro)");
defaultEncodings.put("Cp1141", "IBM Austria, Germany (Euro enabled)");
defaultEncodings.put("Cp1142", "IBM Denmark, Norway (Euro enabled)");
defaultEncodings.put("Cp1143", "IBM Finland, Sweden (Euro enabled)");
defaultEncodings.put("Cp1144", "IBM Italy (Euro enabled)");
defaultEncodings.put("Cp1145", "IBM Catalan/Spain, Spanish Latin America (with Euro)");
defaultEncodings.put("Cp1146", "IBM United Kingdom, Ireland (with Euro)");
defaultEncodings.put("Cp1147", "IBM France (with Euro)");
defaultEncodings.put("Cp1148", "IBM EBCDIC 500V1 (with Euro)");
defaultEncodings.put("Cp1149", "IBM Iceland (with Euro)");
defaultEncodings.put("Cp1381", "IBM OS/2, DOS People's Republic of Chine (PRC)");
defaultEncodings.put("Cp1383", "IBM AIX People's Republic of Chine (PRC)");
defaultEncodings.put("Cp33722", "IBM-eucJP - Japanese (superset of 5050)");
defaultEncodings.put("MS874", "Windows Thai");
defaultEncodings.put("MacArabic", "Macintosh Arabic");
defaultEncodings.put("MacCentralEurope", "Macintosh Latin-2");
defaultEncodings.put("MacCroatian", "Macintosh Croatian");
defaultEncodings.put("MacCyrillic", "Macintosh Cyrillic");
defaultEncodings.put("MacDingbat", "Macintosh Dingbat");
defaultEncodings.put("MacGreek", "Macintosh Greek");
defaultEncodings.put("MacHebrew", "Macintosh Hebrew");
defaultEncodings.put("MacIceland", "Macintosh Iceland");
defaultEncodings.put("MacRoman", "Macintosh Roman");
defaultEncodings.put("MacRomania", "Macintosh Romania");
defaultEncodings.put("MacSymbol", "Macintosh Symbol");
defaultEncodings.put("MacThai", "Macintosh Thai");
defaultEncodings.put("MacTurkish", "Macintosh Turkish");
defaultEncodings.put("MacUkraine", "Macintosh Ukraine");
}
return defaultEncodings;
}
/**
* Creates a default model containing a selection of encodings.
*
* @return The default model.
*/
public static EncodingComboBoxModel createDefaultModel()
{
final EncodingComboBoxModel ecb = new EncodingComboBoxModel();
final String availEncs = ReportConfiguration.getGlobalConfig().getAvailableEncodings();
if (availEncs.equalsIgnoreCase(ReportConfiguration.AVAILABLE_ENCODINGS_ALL))
{
final Properties encodings = getDefaultEncodings();
final Enumeration enum = encodings.keys();
while (enum.hasMoreElements())
{
final String enc = (String) enum.nextElement();
// if not set to "true"
if (encodings.getProperty(enc, "false").equalsIgnoreCase("true"))
{
// if the encoding is disabled ...
ecb.addEncoding(enc, defaultEncodings.getProperty(enc, ENCODING_DEFAULT_DESCRIPTION));
}
}
}
else if (availEncs.equals(ReportConfiguration.AVAILABLE_ENCODINGS_FILE))
{
final String encFile = ReportConfiguration.getGlobalConfig().getEncodingsDefinitionFile();
final InputStream in = ecb.getClass().getResourceAsStream(encFile);
if (in == null)
{
Log.warn(new Log.SimpleMessage
("The specified encodings definition file was not found: ", encFile));
}
else
{
try
{
final Properties defaultEncodings = getDefaultEncodings();
final Properties encDef = new Properties();
final BufferedInputStream bin = new BufferedInputStream(in);
encDef.load(bin);
bin.close();
final Enumeration enum = encDef.keys();
while (enum.hasMoreElements())
{
final String enc = (String) enum.nextElement();
// if not set to "true"
if (encDef.getProperty(enc, "false").equalsIgnoreCase("true"))
{
// if the encoding is disabled ...
ecb.addEncoding
(enc, defaultEncodings.getProperty(enc, ENCODING_DEFAULT_DESCRIPTION));
}
}
}
catch (IOException e)
{
Log.warn(new Log.SimpleMessage
("There was an error while reading the encodings definition file: ", encFile), e);
}
}
}
return ecb;
}
/**
* Returns the index of an encoding.
*
* @param encoding the encoding (name).
*
* @return The index.
*/
public int indexOf(final String encoding)
{
return encodings.indexOf(new EncodingCarrier(encoding, null));
}
/**
* Returns an encoding.
*
* @param index the index.
*
* @return The index.
*/
public String getEncoding(final int index)
{
final EncodingCarrier ec = (EncodingCarrier) encodings.get(index);
return ec.getName();
}
/**
* Returns a description.
*
* @param index the index.
*
* @return The description.
*/
public String getDescription(final int index)
{
final EncodingCarrier ec = (EncodingCarrier) encodings.get(index);
return ec.getDescription();
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -