PageRenderTime 48ms CodeModel.GetById 26ms RepoModel.GetById 0ms app.codeStats 1ms

/jEdit/tags/jedit-4-5-pre1/org/gjt/sp/jedit/options/BufferOptionPane.java

#
Java | 349 lines | 255 code | 39 blank | 55 comment | 26 complexity | af49cca99372ccc2cf1e8aaa67cabaf6 MD5 | raw file
Possible License(s): BSD-3-Clause, AGPL-1.0, Apache-2.0, LGPL-2.0, LGPL-3.0, GPL-2.0, CC-BY-SA-3.0, LGPL-2.1, GPL-3.0, MPL-2.0-no-copyleft-exception, IPL-1.0
  1. /*
  2. * BufferOptionPane.java -
  3. * :tabSize=8:indentSize=8:noTabs=false:
  4. * :folding=explicit:collapseFolds=1:
  5. *
  6. * Copyright (C) 1998, 2003 Slava Pestov
  7. * Portions copyright (C) 1999 mike dillon
  8. *
  9. * This program is free software; you can redistribute it and/or
  10. * modify it under the terms of the GNU General Public License
  11. * as published by the Free Software Foundation; either version 2
  12. * of the License, or any later version.
  13. *
  14. * This program is distributed in the hope that it will be useful,
  15. * but WITHOUT ANY WARRANTY; without even the implied warranty of
  16. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  17. * GNU General Public License for more details.
  18. *
  19. * You should have received a copy of the GNU General Public License
  20. * along with this program; if not, write to the Free Software
  21. * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
  22. */
  23. package org.gjt.sp.jedit.options;
  24. import java.awt.event.ActionEvent;
  25. import java.awt.event.ActionListener;
  26. import java.util.Arrays;
  27. import javax.swing.JCheckBox;
  28. import javax.swing.JComboBox;
  29. import org.gjt.sp.jedit.AbstractOptionPane;
  30. import org.gjt.sp.jedit.Buffer;
  31. import org.gjt.sp.jedit.GUIUtilities;
  32. import org.gjt.sp.jedit.MiscUtilities;
  33. import org.gjt.sp.jedit.Mode;
  34. import org.gjt.sp.jedit.jEdit;
  35. import org.gjt.sp.jedit.buffer.FoldHandler;
  36. import org.gjt.sp.jedit.buffer.JEditBuffer;
  37. import org.gjt.sp.util.StandardUtilities;
  38. public class BufferOptionPane extends AbstractOptionPane
  39. {
  40. private JComboBox encoding;
  41. private JComboBox lineSeparator;
  42. private JCheckBox gzipped;
  43. private Mode[] modes;
  44. private JComboBox mode;
  45. private JComboBox folding;
  46. private JComboBox wrap;
  47. private JComboBox maxLineLen;
  48. private JComboBox tabSize;
  49. private JComboBox indentSize;
  50. private JComboBox checkModStatus;
  51. private JCheckBox noTabs;
  52. private Buffer buffer;
  53. private JCheckBox elasticTabstops;
  54. public BufferOptionPane()
  55. {
  56. super("Buffer Options");
  57. init();
  58. }
  59. //{{{ _init() method
  60. @Override
  61. protected void _init()
  62. {
  63. buffer = jEdit.getActiveView().getBuffer();
  64. String filename = buffer.getName();
  65. setName("Buffer: " + filename);
  66. addComponent(GUIUtilities.createMultilineLabel(
  67. jEdit.getProperty("buffer-options.caption")));
  68. addSeparator("buffer-options.loading-saving");
  69. //{{{ Line separator
  70. String[] lineSeps = { jEdit.getProperty("lineSep.unix"),
  71. jEdit.getProperty("lineSep.windows"),
  72. jEdit.getProperty("lineSep.mac") };
  73. lineSeparator = new JComboBox(lineSeps);
  74. String lineSep = buffer.getStringProperty(JEditBuffer.LINESEP);
  75. if(lineSep == null)
  76. lineSep = System.getProperty("line.separator");
  77. if("\n".equals(lineSep))
  78. lineSeparator.setSelectedIndex(0);
  79. else if("\r\n".equals(lineSep))
  80. lineSeparator.setSelectedIndex(1);
  81. else if("\r".equals(lineSep))
  82. lineSeparator.setSelectedIndex(2);
  83. addComponent(jEdit.getProperty("buffer-options.lineSeparator"),
  84. lineSeparator);
  85. //}}}
  86. //{{{ Encoding
  87. String[] encodings = MiscUtilities.getEncodings(true);
  88. Arrays.sort(encodings,new StandardUtilities.StringCompare<String>(true));
  89. encoding = new JComboBox(encodings);
  90. encoding.setEditable(true);
  91. encoding.setSelectedItem(buffer.getStringProperty(JEditBuffer.ENCODING));
  92. addComponent(jEdit.getProperty("buffer-options.encoding"),
  93. encoding);
  94. //}}}
  95. //{{{ GZipped setting
  96. gzipped = new JCheckBox(jEdit.getProperty(
  97. "buffer-options.gzipped"));
  98. gzipped.setSelected(buffer.getBooleanProperty(Buffer.GZIPPED));
  99. addComponent(gzipped);
  100. //}}}
  101. //{{{ Autoreload settings
  102. /* Check mod status on focus */
  103. String[] modCheckOptions = {
  104. jEdit.getProperty("options.general.checkModStatus.nothing"),
  105. jEdit.getProperty("options.general.checkModStatus.prompt"),
  106. jEdit.getProperty("options.general.checkModStatus.reload"),
  107. jEdit.getProperty("options.general.checkModStatus.silentReload")
  108. };
  109. checkModStatus = new JComboBox(modCheckOptions);
  110. if(buffer.getAutoReload())
  111. {
  112. if(buffer.getAutoReloadDialog())
  113. // reload and notify
  114. checkModStatus.setSelectedIndex(2);
  115. else // reload silently
  116. checkModStatus.setSelectedIndex(3);
  117. }
  118. else
  119. {
  120. if(buffer.getAutoReloadDialog())
  121. // prompt
  122. checkModStatus.setSelectedIndex(1);
  123. else // do nothing
  124. checkModStatus.setSelectedIndex(0);
  125. }
  126. addComponent(jEdit.getProperty("options.general.checkModStatus"),
  127. checkModStatus);
  128. // }}}
  129. addSeparator("buffer-options.editing");
  130. //{{{ Edit mode
  131. modes = jEdit.getModes();
  132. Arrays.sort(modes,new StandardUtilities.StringCompare<Mode>(true));
  133. mode = new JComboBox(modes);
  134. mode.setSelectedItem(buffer.getMode());
  135. ActionHandler actionListener = new ActionHandler();
  136. mode.addActionListener(actionListener);
  137. addComponent(jEdit.getProperty("buffer-options.mode"),mode);
  138. //}}}
  139. //{{{ Fold mode
  140. String[] foldModes = FoldHandler.getFoldModes();
  141. folding = new JComboBox(foldModes);
  142. folding.setSelectedItem(buffer.getStringProperty("folding"));
  143. addComponent(jEdit.getProperty("options.editing.folding"),
  144. folding);
  145. //}}}
  146. //{{{ Wrap mode
  147. String[] wrapModes = {
  148. "none",
  149. "soft",
  150. "hard"
  151. };
  152. wrap = new JComboBox(wrapModes);
  153. wrap.setSelectedItem(buffer.getStringProperty("wrap"));
  154. addComponent(jEdit.getProperty("options.editing.wrap"),
  155. wrap);
  156. //}}}
  157. //{{{ Max line length
  158. String[] lineLengths = { "0", "72", "76", "80" };
  159. maxLineLen = new JComboBox(lineLengths);
  160. maxLineLen.setEditable(true);
  161. maxLineLen.setSelectedItem(buffer.getStringProperty("maxLineLen"));
  162. addComponent(jEdit.getProperty("options.editing.maxLineLen"),
  163. maxLineLen);
  164. //}}}
  165. //{{{ Tab size
  166. String[] tabSizes = { "2", "4", "8" };
  167. tabSize = new JComboBox(tabSizes);
  168. tabSize.setEditable(true);
  169. tabSize.setSelectedItem(buffer.getStringProperty("tabSize"));
  170. addComponent(jEdit.getProperty("options.editing.tabSize"),tabSize);
  171. //}}}
  172. //{{{ Indent size
  173. indentSize = new JComboBox(tabSizes);
  174. indentSize.setEditable(true);
  175. indentSize.setSelectedItem(buffer.getStringProperty("indentSize"));
  176. addComponent(jEdit.getProperty("options.editing.indentSize"),
  177. indentSize);
  178. //}}}
  179. //{{{ Soft tabs
  180. noTabs = new JCheckBox(jEdit.getProperty(
  181. "options.editing.noTabs"));
  182. noTabs.setSelected(buffer.getBooleanProperty("noTabs"));
  183. addComponent(noTabs);
  184. //}}}
  185. //{{{ Elastic tabstops
  186. elasticTabstops = new JCheckBox(jEdit.getProperty(
  187. "options.editing.elasticTabstops"));
  188. elasticTabstops.setToolTipText(jEdit.getProperty("options.editing.elasticTabstops.tooltip"));
  189. elasticTabstops.setSelected(buffer.getBooleanProperty("elasticTabstops"));
  190. addComponent(elasticTabstops);
  191. //}}}
  192. } //}}}
  193. //{{{ _save() method
  194. @Override
  195. protected void _save()
  196. {
  197. int index = lineSeparator.getSelectedIndex();
  198. String lineSep;
  199. if(index == 0)
  200. lineSep = "\n";
  201. else if(index == 1)
  202. lineSep = "\r\n";
  203. else if(index == 2)
  204. lineSep = "\r";
  205. else
  206. throw new InternalError();
  207. String oldLineSep = buffer.getStringProperty(JEditBuffer.LINESEP);
  208. if(oldLineSep == null)
  209. oldLineSep = System.getProperty("line.separator");
  210. if(!oldLineSep.equals(lineSep))
  211. {
  212. buffer.setStringProperty(JEditBuffer.LINESEP, lineSep);
  213. buffer.setDirty(true);
  214. }
  215. String encoding = (String)this.encoding.getSelectedItem();
  216. String oldEncoding = buffer.getStringProperty(JEditBuffer.ENCODING);
  217. if(!oldEncoding.equals(encoding))
  218. {
  219. buffer.setStringProperty(JEditBuffer.ENCODING,encoding);
  220. buffer.setDirty(true);
  221. // Disable auto-detect because user explicitly
  222. // specify an encoding.
  223. buffer.setBooleanProperty(Buffer.ENCODING_AUTODETECT,false);
  224. }
  225. boolean gzippedValue = gzipped.isSelected();
  226. boolean oldGzipped = buffer.getBooleanProperty(
  227. Buffer.GZIPPED);
  228. if(gzippedValue != oldGzipped)
  229. {
  230. buffer.setBooleanProperty(Buffer.GZIPPED,gzippedValue);
  231. buffer.setDirty(true);
  232. }
  233. buffer.setStringProperty("folding",(String)folding.getSelectedItem());
  234. buffer.setStringProperty("wrap",(String)wrap.getSelectedItem());
  235. try
  236. {
  237. buffer.setProperty("maxLineLen",new Integer(
  238. maxLineLen.getSelectedItem().toString()));
  239. }
  240. catch(NumberFormatException nf)
  241. {
  242. }
  243. try
  244. {
  245. buffer.setProperty("tabSize",new Integer(
  246. tabSize.getSelectedItem().toString()));
  247. }
  248. catch(NumberFormatException nf)
  249. {
  250. }
  251. try
  252. {
  253. buffer.setProperty("indentSize",new Integer(
  254. indentSize.getSelectedItem().toString()));
  255. }
  256. catch(NumberFormatException nf)
  257. {
  258. }
  259. buffer.setBooleanProperty("noTabs",noTabs.isSelected());
  260. buffer.setBooleanProperty("elasticTabstops",elasticTabstops.isSelected());
  261. index = mode.getSelectedIndex();
  262. buffer.setMode(modes[index]);
  263. switch(checkModStatus.getSelectedIndex())
  264. {
  265. case 0:
  266. buffer.setAutoReloadDialog(false);
  267. buffer.setAutoReload(false);
  268. break;
  269. case 1:
  270. buffer.setAutoReloadDialog(true);
  271. buffer.setAutoReload(false);
  272. break;
  273. case 2:
  274. buffer.setAutoReloadDialog(true);
  275. buffer.setAutoReload(true);
  276. break;
  277. case 3:
  278. buffer.setAutoReloadDialog(false);
  279. buffer.setAutoReload(true);
  280. break;
  281. }
  282. } //}}}
  283. //{{{ ActionHandler() class
  284. private class ActionHandler implements ActionListener
  285. {
  286. //{{{ actionPerformed() method
  287. public void actionPerformed(ActionEvent evt)
  288. {
  289. Object source = evt.getSource();
  290. if(source == mode)
  291. {
  292. Mode _mode = (Mode)mode.getSelectedItem();
  293. folding.setSelectedItem(_mode.getProperty(
  294. "folding"));
  295. wrap.setSelectedItem(_mode.getProperty(
  296. "wrap"));
  297. maxLineLen.setSelectedItem(_mode.getProperty(
  298. "maxLineLen"));
  299. tabSize.setSelectedItem(_mode.getProperty(
  300. "tabSize"));
  301. indentSize.setSelectedItem(_mode.getProperty(
  302. "indentSize"));
  303. noTabs.setSelected(_mode.getBooleanProperty(
  304. "noTabs"));
  305. elasticTabstops.setSelected(_mode.getBooleanProperty(
  306. "elasticTabstops"));
  307. }
  308. } //}}}
  309. } //}}}
  310. }