/** Creates new form FindAndReplaceDialog */ public FindAndReplaceDialog(java.awt.Frame parent, boolean modal, JTabbedPane tab) { super(parent, modal); initComponents(); setLocationRelativeTo(null); RTextScrollPane t = (RTextScrollPane) tab.getComponentAt(tab.getSelectedIndex()); selectedArea = (RSyntaxTextArea) t.getTextArea(); findDocListener(); replaceDocListener(); }
private void setCodePane(final SwingNode swingNode, final JPanel cp, int width, int height) { RSyntaxTextArea textArea = new RSyntaxTextArea(width, height); // 32,45 textArea.setSyntaxEditingStyle(SyntaxConstants.SYNTAX_STYLE_JAVA); textArea.setCodeFoldingEnabled(true); textArea.setAntiAliasingEnabled(true); textArea.doLayout(); RTextScrollPane sp = new RTextScrollPane(textArea); sp.setFoldIndicatorEnabled(true); cp.add(sp); swingNode.setContent(cp); }
/** * Marque une ligne du texte avec une icône. * * @param line Numéro de la ligne du texte. * @param icon Nom de l'icône à utiliser (une icône indiquant une erreur par défaut). */ public void signalLine(int line, String icon) { Gutter gutter = scrollPane.getGutter(); gutter.setBookmarkingEnabled(true); try { textArea.setCaretPosition(textArea.getLineStartOffset(line - 1)); scrollPane .getGutter() .addLineTrackingIcon( line - 1, Macros.getIcon(icon == null ? "org/javascool/widgets/icons/error.png" : icon)); } catch (Exception e) { } }
public FindAndReplaceDemo() { JPanel cp = new JPanel(new BorderLayout()); textArea = new RSyntaxTextArea(20, 60); textArea.setSyntaxEditingStyle(SyntaxConstants.SYNTAX_STYLE_JAVA); textArea.setCodeFoldingEnabled(true); textArea.setAntiAliasingEnabled(true); RTextScrollPane sp = new RTextScrollPane(textArea); sp.setFoldIndicatorEnabled(true); cp.add(sp); // Create a toolbar with searching options. JPanel toolBar = new JPanel(); searchField = new JTextField(30); toolBar.add(searchField); final JButton nextButton = new JButton("Find Next"); nextButton.setActionCommand("FindNext"); nextButton.addActionListener(this); toolBar.add(nextButton); searchField.addActionListener( new ActionListener() { public void actionPerformed(ActionEvent e) { nextButton.doClick(0); } }); JButton prevButton = new JButton("Find Previous"); prevButton.setActionCommand("FindPrev"); prevButton.addActionListener(this); toolBar.add(prevButton); regexCB = new JCheckBox("Regex"); toolBar.add(regexCB); matchCaseCB = new JCheckBox("Match Case"); toolBar.add(matchCaseCB); cp.add(toolBar, BorderLayout.NORTH); setContentPane(cp); setTitle("Find and Replace Demo"); setDefaultCloseOperation(EXIT_ON_CLOSE); pack(); setLocationRelativeTo(null); }
/** Construit un panneau d'édition. */ public TextEditor() { setLayout(new BorderLayout()); // Creation de la barre de commande { toolBar = new ToolBar(); add(toolBar, BorderLayout.NORTH); } // Creation de la zone d'édition { textArea = new RSyntaxTextArea(25, 70); textArea.setCaretPosition(0); textArea.requestFocusInWindow(); textArea.setMarkOccurrences(true); textArea.setText(""); scrollPane = new RTextScrollPane(textArea, true); Gutter gutter = scrollPane.getGutter(); gutter.setBorderColor(Color.BLUE); add(scrollPane, BorderLayout.CENTER); } // Définition du mécanisme de complétion { completionsProvider = new DefaultCompletionProvider(); LanguageAwareCompletionProvider lacp = new LanguageAwareCompletionProvider(completionsProvider); AutoCompletion ac = new AutoCompletion(lacp) { @Override public void doCompletion() { if (isAutoCompleteEnabled()) { super.doCompletion(); } } }; ac.install(textArea); ac.setAutoCompleteSingleChoices(false); ac.setAutoActivationEnabled(true); ac.setAutoActivationDelay(1500); ac.setShowDescWindow(true); } // Ajout de l'aide à l'édition { JPopupMenu j = toolBar.addRightTool("Aide"); j.add(new JLabel("<html>\n<b>Commandes d'édition</b><br><table>\n" + helpText + "</table>")); } }
/** Efface toutes les marques mises sur le code. */ public void removeLineSignals() { scrollPane.getGutter().removeAllTrackingIcons(); }
public void setContents() { String name = this.name.toLowerCase(); panelArea.setCodeFoldingEnabled(true); panelArea.setAntiAliasingEnabled(true); RTextScrollPane scrollPane = new RTextScrollPane(panelArea); panelArea.addKeyListener( new KeyListener() { public void keyPressed(KeyEvent e) { if ((e.getKeyCode() == KeyEvent.VK_F) && ((e.getModifiers() & KeyEvent.CTRL_MASK) != 0)) { field.requestFocus(); } BytecodeViewer.checkHotKey(e); } @Override public void keyReleased(KeyEvent arg0) {} @Override public void keyTyped(KeyEvent arg0) {} }); String contentsS = new String(contents); if (!isPureAscii(contentsS)) { if (name.endsWith(".png") || name.endsWith(".jpg") || name.endsWith(".jpeg") || name.endsWith(".gif") || name.endsWith(".tif") || name.endsWith(".bmp")) { canRefresh = true; try { image = ImageIO.read(new ByteArrayInputStream(contents)); // gifs fail cause of this JLabel label = new JLabel("", new ImageIcon(image), JLabel.CENTER); panel2.add(label, BorderLayout.CENTER); panel2.addMouseWheelListener( new MouseWheelListener() { @Override public void mouseWheelMoved(MouseWheelEvent e) { int notches = e.getWheelRotation(); if (notches < 0) { image = Scalr.resize( image, Scalr.Method.SPEED, image.getWidth() + 10, image.getHeight() + 10); } else { image = Scalr.resize( image, Scalr.Method.SPEED, image.getWidth() - 10, image.getHeight() - 10); } panel2.removeAll(); JLabel label = new JLabel("", new ImageIcon(image), JLabel.CENTER); panel2.add(label, BorderLayout.CENTER); panel2.updateUI(); } }); return; } catch (Exception e) { new the.bytecode.club.bytecodeviewer.api.ExceptionUI(e); } } else { JHexEditor hex = new JHexEditor(contents); panel2.add(hex); return; } } if (name.endsWith(".xml") || contentsS.startsWith("<?xml") || contentsS.startsWith(("<xml"))) { panelArea.setSyntaxEditingStyle(SyntaxConstants.SYNTAX_STYLE_XML); panelArea.setText(contentsS); } else if (name.endsWith(".py") || name.endsWith(".python")) { panelArea.setSyntaxEditingStyle(SyntaxConstants.SYNTAX_STYLE_PYTHON); panelArea.setText(contentsS); } else if (name.endsWith(".rb") || name.endsWith(".ruby")) { panelArea.setSyntaxEditingStyle(SyntaxConstants.SYNTAX_STYLE_RUBY); panelArea.setText(contentsS); } else if (name.endsWith(".java")) { panelArea.setSyntaxEditingStyle(SyntaxConstants.SYNTAX_STYLE_JAVA); panelArea.setText(contentsS); } else if (name.endsWith(".html")) { panelArea.setSyntaxEditingStyle(SyntaxConstants.SYNTAX_STYLE_HTML); panelArea.setText(contentsS); } else if (name.endsWith(".css")) { panelArea.setSyntaxEditingStyle(SyntaxConstants.SYNTAX_STYLE_CSS); panelArea.setText(contentsS); } else if (name.endsWith(".properties") || name.endsWith(".mf") || name.endsWith(".sf")) { panelArea.setSyntaxEditingStyle(SyntaxConstants.SYNTAX_STYLE_PROPERTIES_FILE); panelArea.setText(contentsS); } else if (name.endsWith(".php") || contentsS.startsWith("<?php")) { panelArea.setSyntaxEditingStyle(SyntaxConstants.SYNTAX_STYLE_PHP); panelArea.setText(contentsS); } else if (name.endsWith(".js")) { panelArea.setSyntaxEditingStyle(SyntaxConstants.SYNTAX_STYLE_JAVASCRIPT); panelArea.setText(contentsS); } else if (name.endsWith(".bat")) { panelArea.setSyntaxEditingStyle(SyntaxConstants.SYNTAX_STYLE_WINDOWS_BATCH); panelArea.setText(contentsS); } else if (name.endsWith(".sh")) { panelArea.setSyntaxEditingStyle(SyntaxConstants.SYNTAX_STYLE_UNIX_SHELL); panelArea.setText(contentsS); } else if (name.endsWith(".c")) { panelArea.setSyntaxEditingStyle(SyntaxConstants.SYNTAX_STYLE_C); panelArea.setText(contentsS); } else if (name.endsWith(".cpp")) { panelArea.setSyntaxEditingStyle(SyntaxConstants.SYNTAX_STYLE_CPLUSPLUS); panelArea.setText(contentsS); } else if (name.endsWith(".scala")) { panelArea.setSyntaxEditingStyle(SyntaxConstants.SYNTAX_STYLE_SCALA); panelArea.setText(contentsS); } else if (name.endsWith(".clojure")) { panelArea.setSyntaxEditingStyle(SyntaxConstants.SYNTAX_STYLE_CLOJURE); panelArea.setText(contentsS); } else if (name.endsWith(".groovy")) { panelArea.setSyntaxEditingStyle(SyntaxConstants.SYNTAX_STYLE_GROOVY); panelArea.setText(contentsS); } else if (name.endsWith(".lua")) { panelArea.setSyntaxEditingStyle(SyntaxConstants.SYNTAX_STYLE_LUA); panelArea.setText(contentsS); } else if (name.endsWith(".sql")) { panelArea.setSyntaxEditingStyle(SyntaxConstants.SYNTAX_STYLE_SQL); panelArea.setText(contentsS); } else if (name.endsWith(".json")) { panelArea.setSyntaxEditingStyle(SyntaxConstants.SYNTAX_STYLE_JSON); panelArea.setText(contentsS); } else if (name.endsWith(".jsp")) { panelArea.setSyntaxEditingStyle(SyntaxConstants.SYNTAX_STYLE_JSP); panelArea.setText(contentsS); } else { panelArea.setSyntaxEditingStyle(SyntaxConstants.SYNTAX_STYLE_NONE); panelArea.setText(contentsS); } panelArea.setCaretPosition(0); scrollPane.setColumnHeaderView(panel); panel2.add(scrollPane); }
private Component createEntryViewer(JarEntry entry) { if (entry.getType().equals(JarEntryType.classEntry) || entry.getType().equals(JarEntryType.javaEntry) || entry.getType().equals(JarEntryType.fileEntry)) { String ext = FileUtils.getFileExtPart(entry.getName(), false).toLowerCase(); if (GlobalConstants.IMAGE_FORMATS.contains(ext)) { // todo A better image viewer (actually a new component - WebImageViewer) // Image file viewer WebImage image = new WebImage(); image.setIcon(ImageUtils.loadImage(getEntryInputStream(entry))); // Image scroll WebScrollPane imageScroll = new WebScrollPane(image, false); imageScroll.setVerticalScrollBarPolicy(WebScrollPane.VERTICAL_SCROLLBAR_ALWAYS); imageScroll.setHorizontalScrollBarPolicy(WebScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS); return imageScroll; } else { // Source code viewer final RSyntaxTextArea source = new RSyntaxTextArea(); // Syntax style boolean libraryCode = false; if (ext.equals("java") || ext.equals("class")) { source.setSyntaxEditingStyle(SyntaxConstants.SYNTAX_STYLE_JAVA); libraryCode = true; } else if (ext.equals("xml")) { source.setSyntaxEditingStyle(SyntaxConstants.SYNTAX_STYLE_XML); } else if (ext.equals("html")) { source.setSyntaxEditingStyle(SyntaxConstants.SYNTAX_STYLE_HTML); } else if (ext.equals("css")) { source.setSyntaxEditingStyle(SyntaxConstants.SYNTAX_STYLE_CSS); } else if (ext.equals("js")) { source.setSyntaxEditingStyle(SyntaxConstants.SYNTAX_STYLE_JAVASCRIPT); } else if (ext.equals("php")) { source.setSyntaxEditingStyle(SyntaxConstants.SYNTAX_STYLE_PHP); } else if (ext.equals("sql")) { source.setSyntaxEditingStyle(SyntaxConstants.SYNTAX_STYLE_SQL); } else { source.setSyntaxEditingStyle(SyntaxConstants.SYNTAX_STYLE_NONE); } // Settings source.setEditable(false); source.setMargin(new Insets(0, 5, 0, 0)); source.setAntiAliasingEnabled(true); source.setUseFocusableTips(true); source.setTabSize(4); // source.setLineWrap ( true ); // source.setWrapStyleWord ( true ); source.setCodeFoldingEnabled(allowCodeFolding.isSelected()); source.setPaintTabLines(paintTabLines.isSelected()); source.setWhitespaceVisible(showWhitespaces.isSelected()); source.setEOLMarkersVisible(showEol.isSelected()); source.addHyperlinkListener( new HyperlinkListener() { @Override public void hyperlinkUpdate(HyperlinkEvent e) { WebUtils.browseSiteSafely(e.getURL().toExternalForm()); } }); ((RSyntaxTextAreaHighlighter) source.getHighlighter()).setDrawsLayeredHighlights(false); // Source code source.setText(libraryCode ? loadSource(entry) : loadString(entry)); source.setCaretPosition(0); // "Jump to source"-like action source.addMouseListener( new MouseAdapter() { @Override public void mousePressed(MouseEvent e) { // todo Fix when clicked in class "MyName" on string "MyName" // Additional feature to dive into related classes if (SwingUtilities.isMiddleMouseButton(e) || SwingUtils.isCtrl(e) && SwingUtilities.isLeftMouseButton(e)) { int pos = source.getUI().viewToModel(source, e.getPoint()); String word = TextUtils.getWord(source.getText(), pos); if (word != null) { JarEntry classByName = jarStructure.findEntryByName(word); if (classByName != null && (classByName.getType().equals(JarEntryType.classEntry) || classByName.getType().equals(JarEntryType.javaEntry))) { updateClassPath(classByName, true); } } } } }); // Saving opened editor synchronized (activeEditorsLock) { activeEditors.put(entry, source); } // Special code viewer scroll pane RTextScrollPane sourceScroll = new RTextScrollPane(source); sourceScroll.setVerticalScrollBarPolicy(WebScrollPane.VERTICAL_SCROLLBAR_ALWAYS); ((WebScrollPaneUI) sourceScroll.getUI()).setDrawBorder(false); // Source code viewer theme loadTheme(theme.getSelectedItem().toString().toLowerCase(), source); return sourceScroll; } } return new WebLabel(); }