/* * @(#)CodeEditorDemo.java 5/30/2006 * * Copyright 2002 - 2006 JIDE Software Inc. All rights reserved. */ import com.jidesoft.editor.CodeEditor; import com.jidesoft.editor.ListDataCodeEditorIntelliHints; import com.jidesoft.editor.language.LanguageSpec; import com.jidesoft.editor.language.LanguageSpecManager; import com.jidesoft.editor.status.CodeEditorStatusBar; import com.jidesoft.editor.tokenmarker.JavaTokenMarker; import com.jidesoft.plaf.LookAndFeelFactory; import com.jidesoft.swing.Searchable; import com.jidesoft.swing.SearchableBar; import javax.swing.*; import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.KeyEvent; import java.io.*; import java.util.Arrays; import java.util.Set; /** * Demoed Component: {@link com.jidesoft.editor.CodeEditor}
Required jar files: jide-common.jar, jide-editor.jar, jide-components.jar, jide-shortcut.jar, jide-editor.jar
Required L&F: any * L&F */ public class CodeEditorDemo extends AbstractDemo { public CodeEditor _editor; private static final long serialVersionUID = 146545943327662356L; public CodeEditorDemo() { } public String getName() { return "CodeEditor Demo"; } public String getProduct() { return PRODUCT_NAME_CODE_EDITOR; } @Override public int getAttributes() { return ATTRIBUTE_UPDATED; } @Override public String getDescription() { return "This is the simplest example of using CodeEditor. All it does is to show you how to open a CodeEditor" + "with Java syntax coloring. There is no other customization in this example. You can check CodeEditorDocumentPane " + "and other examples to see more advanced features.\n\n" + "Demoed classes:\n" + "CodeEditor"; } public Component getDemoPanel() { _editor = new CodeEditor(); try { StringBuffer buf = readInputStream(CodeEditorDemo.class.getClassLoader().getResourceAsStream("CodeEditorDemo.java")); _editor.setTokenMarker(new JavaTokenMarker()); LanguageSpec languageSpec = LanguageSpecManager.getInstance().getLanguageSpec("Java"); if (languageSpec != null) { languageSpec.configureCodeEditor(_editor); } _editor.setText(buf.toString()); _editor.setPreferredSize(new Dimension(600, 500)); _editor.setHorizontalScrollBarPolicy(ScrollPane.SCROLLBARS_AS_NEEDED); _editor.setVerticalScrollBarPolicy(ScrollPane.SCROLLBARS_AS_NEEDED); Set stringSet = JavaTokenMarker.getKeywords().keyWordSet(); String[] strings = stringSet.toArray(new String[stringSet.size()]); Arrays.sort(strings); new ListDataCodeEditorIntelliHints(_editor, strings); final JPanel panel = new JPanel(new BorderLayout()); panel.add(_editor); final JPanel barPanel = new JPanel(new BorderLayout()); barPanel.add(new CodeEditorStatusBar(_editor), BorderLayout.CENTER); panel.add(barPanel, BorderLayout.AFTER_LAST_LINE); Searchable searchable = _editor.getSearchable(); searchable.setRepeats(true); SearchableBar _textAreaSearchableBar = SearchableBar.install(searchable, KeyStroke.getKeyStroke(KeyEvent.VK_F, KeyEvent.CTRL_DOWN_MASK | KeyEvent.SHIFT_DOWN_MASK), new SearchableBar.Installer() { public void openSearchBar(SearchableBar searchableBar) { barPanel.add(searchableBar, BorderLayout.AFTER_LAST_LINE); barPanel.invalidate(); barPanel.revalidate(); } public void closeSearchBar(SearchableBar searchableBar) { barPanel.remove(searchableBar); barPanel.invalidate(); barPanel.revalidate(); } }); _textAreaSearchableBar.getInstaller().openSearchBar(_textAreaSearchableBar); return panel; } catch (IOException e) { e.printStackTrace(); } return null; } private static StringBuffer readInputStream(InputStream in) throws IOException { Reader reader = new InputStreamReader(in); char[] buf = new char[1024]; StringBuffer buffer = new StringBuffer(); int read; while ((read = reader.read(buf)) != -1) { buffer.append(buf, 0, read); } reader.close(); return buffer; } @Override public String getDemoFolder() { return "E1.CodeEditor"; } @Override public void dispose() { _editor = null; } protected String _lastDirectory = "."; @Override public Component getOptionsPanel() { JPanel panel = new JPanel(); panel.add(new JButton(new AbstractAction("Export to File") { private static final long serialVersionUID = -5339862184315043027L; public void actionPerformed(ActionEvent e) { JFileChooser chooser = new JFileChooser() { @Override protected JDialog createDialog(Component parent) throws HeadlessException { JDialog dialog = super.createDialog(parent); dialog.setTitle("Export the content to an Excel file"); return dialog; } }; chooser.setCurrentDirectory(new File(_lastDirectory)); int result = chooser.showDialog(((JButton) e.getSource()).getTopLevelAncestor(), "Export"); if (result == JFileChooser.APPROVE_OPTION) { _lastDirectory = chooser.getCurrentDirectory().getAbsolutePath(); try { System.out.println("Writing to file: " + chooser.getSelectedFile().getAbsolutePath()); FileOutputStream fileOut = new FileOutputStream(chooser.getSelectedFile().getAbsolutePath()); _editor.exportToOutputStream(fileOut); fileOut.close(); System.out.println("File Written"); } catch (Exception e1) { e1.printStackTrace(); } } } })); return panel; } static public void main(String[] s) { LookAndFeelFactory.installDefaultLookAndFeel(); showAsFrame(new CodeEditorDemo()); } }