Uses 6678K of libraries. Click here for Pure Java version (6085L/40K/146K).
!7 lib 1013041 // RSyntaxTextArea lib 1013047 // AutoComplete lib 1013048 // RSTAUI import javax.swing.UIManager.LookAndFeelInfo; import org.fife.rsta.ui.CollapsibleSectionPanel; //import org.fife.rsta.ui.DocumentMap; 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; p-substance { rsyntaxTextArea_fixNumPad(); 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.<p> * * Unlike the library itself, this class is public domain. * * @author Robert Futrell * @version 1.0 */ sclass 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; i<infos.length; i++) { addItem(new LookAndFeelAction(infos[i]), bg, menu); } mb.add(menu); return mb; } @Override public String getSelectedText() { return textArea.getSelectedText(); } /** * Creates our Find and Replace dialogs. */ public void initSearchDialogs() { findDialog = new FindDialog(this, this); replaceDialog = new ReplaceDialog(this, this); // This ties the properties of the two dialogs together (match case, // regex, etc.). SearchContext context = findDialog.getSearchContext(); replaceDialog.setSearchContext(context); // Create tool bars and tie their search contexts together also. findToolBar = new FindToolBar(this); findToolBar.setSearchContext(context); replaceToolBar = new ReplaceToolBar(this); replaceToolBar.setSearchContext(context); } /** * Listens for events from our search dialogs and actually does the dirty * work. */ @Override public void searchEvent(SearchEvent e) { SearchEvent.Type type = e.getType(); SearchContext context = e.getSearchContext(); SearchResult result = null; switch (type) { default: // Prevent FindBugs warning later case MARK_ALL: result = SearchEngine.markAll(textArea, context); break; case FIND: result = SearchEngine.find(textArea, context); if (!result.wasFound()) { UIManager.getLookAndFeel().provideErrorFeedback(textArea); } break; case REPLACE: result = SearchEngine.replace(textArea, context); if (!result.wasFound()) { UIManager.getLookAndFeel().provideErrorFeedback(textArea); } break; case REPLACE_ALL: result = SearchEngine.replaceAll(textArea, context); JOptionPane.showMessageDialog(null, result.getCount() + " occurrences replaced."); break; } String text = null; if (result.wasFound()) { text = "Text found; occurrences marked: " + result.getMarkedCount(); } else if (type==SearchEvent.Type.MARK_ALL) { if (result.getMarkedCount()>0) { 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); } } }
Began life as a copy of #1003942
download show line numbers debug dex old transpilations
Travelled to 13 computer(s): aoiabmzegqzx, bhatertpkbcr, cbybwowwnfue, cfunsshuasjs, gwrvuhgaqvyk, ishqpsrjomds, lpdgvwnxivlt, mqqgnosmbjvj, pyentgdyhuwx, pzhvpgtvlbxg, tslmcundralx, tvejysmllsmz, vouqrxazstgt
No comments. add comment
Snippet ID: | #1013049 |
Snippet name: | Test RSTAUI (RSyntaxTextArea + dialogs) - new version (OK) |
Eternal ID of this version: | #1013049/5 |
Text MD5: | 3011eb82f021666b7499788cee4ca781 |
Transpilation MD5: | 41f17b1b6f520a692f226f50fbffa30b |
Author: | stefan |
Category: | javax / gui |
Type: | JavaX source code |
Public (visible to everyone): | Yes |
Archived (hidden from active list): | No |
Created/modified: | 2017-12-22 16:54:50 |
Source code size: | 9278 bytes / 345 lines |
Pitched / IR pitched: | No / No |
Views / Downloads: | 466 / 547 |
Version history: | 4 change(s) |
Referenced in: | #1013050 - Test RSTAUI (RSyntaxTextArea + dialogs) without Substance (OK) |