import java.util.*; import java.util.zip.*; import java.util.List; import java.util.regex.*; import java.util.concurrent.*; import java.util.concurrent.atomic.*; import javax.swing.event.*; import javax.swing.text.*; import javax.swing.table.*; import java.io.*; import java.net.*; import java.lang.reflect.*; import java.lang.ref.*; import java.lang.management.*; import java.security.*; import java.security.spec.*; import java.awt.*; import java.awt.image.*; import javax.imageio.*; import java.math.*; import java.awt.BorderLayout; import java.awt.event.*; import javax.swing.*; import javax.swing.UIManager.LookAndFeelInfo; import javax.swing.text.BadLocationException; import org.fife.rsta.ui.CollapsibleSectionPanel; import org.fife.rsta.ui.GoToDialog; import org.fife.rsta.ui.SizeGripIcon; import org.fife.rsta.ui.search.FindDialog; import org.fife.rsta.ui.search.ReplaceDialog; import org.fife.rsta.ui.search.ReplaceToolBar; import org.fife.rsta.ui.search.SearchEvent; import org.fife.rsta.ui.search.SearchListener; import org.fife.rsta.ui.search.FindToolBar; import org.fife.ui.rsyntaxtextarea.ErrorStrip; import org.fife.ui.rsyntaxtextarea.RSyntaxTextArea; import org.fife.ui.rsyntaxtextarea.SyntaxConstants; import org.fife.ui.rtextarea.RTextScrollPane; import org.fife.ui.rtextarea.SearchContext; import org.fife.ui.rtextarea.SearchEngine; import org.fife.ui.rtextarea.SearchResult; public class main { //import org.fife.rsta.ui.DocumentMap; public static void main(String[] args) throws Exception { new RSTAUIDemoApp().setVisible(true); } /** * An application that demonstrates use of the RSTAUI project. Please don't * take this as good application design; it's just a simple example.

* * Unlike the library itself, this class is public domain. * * @author Robert Futrell * @version 1.0 */ static class RSTAUIDemoApp extends JFrame implements SearchListener { private CollapsibleSectionPanel csp; private RSyntaxTextArea textArea; private FindDialog findDialog; private ReplaceDialog replaceDialog; private FindToolBar findToolBar; private ReplaceToolBar replaceToolBar; private StatusBar statusBar; public RSTAUIDemoApp() { initSearchDialogs(); JPanel contentPane = new JPanel(new BorderLayout()); setContentPane(contentPane); csp = new CollapsibleSectionPanel(); contentPane.add(csp); setJMenuBar(createMenuBar()); textArea = new RSyntaxTextArea(25, 80); textArea.setSyntaxEditingStyle(SyntaxConstants.SYNTAX_STYLE_JAVA); textArea.setCodeFoldingEnabled(true); textArea.setMarkOccurrences(true); RTextScrollPane sp = new RTextScrollPane(textArea); csp.add(sp); ErrorStrip errorStrip = new ErrorStrip(textArea); contentPane.add(errorStrip, BorderLayout.LINE_END); //org.fife.rsta.ui.DocumentMap docMap = new org.fife.rsta.ui.DocumentMap(textArea); //contentPane.add(docMap, BorderLayout.LINE_END); statusBar = new StatusBar(); contentPane.add(statusBar, BorderLayout.SOUTH); setTitle("RSTAUI Demo Application"); setDefaultCloseOperation(EXIT_ON_CLOSE); pack(); setLocationRelativeTo(null); } private void addItem(Action a, ButtonGroup bg, JMenu menu) { JRadioButtonMenuItem item = new JRadioButtonMenuItem(a); bg.add(item); menu.add(item); } private JMenuBar createMenuBar() { JMenuBar mb = new JMenuBar(); JMenu menu = new JMenu("Search"); menu.add(new JMenuItem(new ShowFindDialogAction())); menu.add(new JMenuItem(new ShowReplaceDialogAction())); menu.add(new JMenuItem(new GoToLineAction())); menu.addSeparator(); int ctrl = getToolkit().getMenuShortcutKeyMask(); int shift = InputEvent.SHIFT_MASK; KeyStroke ks = KeyStroke.getKeyStroke(KeyEvent.VK_F, ctrl|shift); Action a = csp.addBottomComponent(ks, findToolBar); a.putValue(Action.NAME, "Show Find Search Bar"); menu.add(new JMenuItem(a)); ks = KeyStroke.getKeyStroke(KeyEvent.VK_H, ctrl|shift); a = csp.addBottomComponent(ks, replaceToolBar); a.putValue(Action.NAME, "Show Replace Search Bar"); menu.add(new JMenuItem(a)); mb.add(menu); menu = new JMenu("LookAndFeel"); ButtonGroup bg = new ButtonGroup(); LookAndFeelInfo[] infos = UIManager.getInstalledLookAndFeels(); for (int i=0; i0) { text = "Occurrences marked: " + result.getMarkedCount(); } else { text = ""; } } else { text = "Text not found"; } statusBar.setLabel(text); } public static void main(String[] args) { SwingUtilities.invokeLater(new Runnable() { @Override public void run() { try { UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); // UIManager.setLookAndFeel("org.pushingpixels.substance.api.skin.SubstanceGraphiteAquaLookAndFeel"); } catch (Exception e) { e.printStackTrace(); } new RSTAUIDemoApp().setVisible(true); } }); } private class GoToLineAction extends AbstractAction { public GoToLineAction() { super("Go To Line..."); int c = getToolkit().getMenuShortcutKeyMask(); putValue(ACCELERATOR_KEY, KeyStroke.getKeyStroke(KeyEvent.VK_L, c)); } @Override public void actionPerformed(ActionEvent e) { if (findDialog.isVisible()) { findDialog.setVisible(false); } if (replaceDialog.isVisible()) { replaceDialog.setVisible(false); } GoToDialog dialog = new GoToDialog(RSTAUIDemoApp.this); dialog.setMaxLineNumberAllowed(textArea.getLineCount()); dialog.setVisible(true); int line = dialog.getLineNumber(); if (line>0) { try { textArea.setCaretPosition(textArea.getLineStartOffset(line-1)); } catch (BadLocationException ble) { // Never happens UIManager.getLookAndFeel().provideErrorFeedback(textArea); ble.printStackTrace(); } } } } private class LookAndFeelAction extends AbstractAction { private LookAndFeelInfo info; public LookAndFeelAction(LookAndFeelInfo info) { putValue(NAME, info.getName()); this.info = info; } @Override public void actionPerformed(ActionEvent e) { try { UIManager.setLookAndFeel(info.getClassName()); SwingUtilities.updateComponentTreeUI(RSTAUIDemoApp.this); if (findDialog!=null) { findDialog.updateUI(); replaceDialog.updateUI(); } pack(); } catch (RuntimeException re) { throw re; // FindBugs } catch (Exception ex) { ex.printStackTrace(); } } } private class ShowFindDialogAction extends AbstractAction { public ShowFindDialogAction() { super("Find..."); int c = getToolkit().getMenuShortcutKeyMask(); putValue(ACCELERATOR_KEY, KeyStroke.getKeyStroke(KeyEvent.VK_F, c)); } @Override public void actionPerformed(ActionEvent e) { if (replaceDialog.isVisible()) { replaceDialog.setVisible(false); } findDialog.setVisible(true); } } private class ShowReplaceDialogAction extends AbstractAction { public ShowReplaceDialogAction() { super("Replace..."); int c = getToolkit().getMenuShortcutKeyMask(); putValue(ACCELERATOR_KEY, KeyStroke.getKeyStroke(KeyEvent.VK_H, c)); } @Override public void actionPerformed(ActionEvent e) { if (findDialog.isVisible()) { findDialog.setVisible(false); } replaceDialog.setVisible(true); } } private static class StatusBar extends JPanel { private JLabel label; public StatusBar() { label = new JLabel("Ready"); setLayout(new BorderLayout()); add(label, BorderLayout.LINE_START); add(new JLabel(new SizeGripIcon()), BorderLayout.LINE_END); } public void setLabel(String label) { this.label.setText(label); } } } }