/** * @param parent * @param xmlViewTA */ public XMlViewDialog(Frame parent) { super(parent); addWindowListener( new WindowAdapter() { public void windowClosed(WindowEvent e) { setVisible(false); } }); setModal(false); xmlViewTA = new RSyntaxTextArea(); xmlViewTA.setEditable(false); xmlViewTA.setSyntaxEditingStyle(SyntaxConstants.SYNTAX_STYLE_XML); RTextScrollPane sp = new RTextScrollPane(xmlViewTA); add(sp, BorderLayout.CENTER); JButton button = new JButton("Close"); button.addActionListener( new ActionListener() { @Override public void actionPerformed(ActionEvent e) { setVisible(false); } }); add(button, BorderLayout.SOUTH); // Create a toolbar with searching options. JToolBar toolBar = new JToolBar(); toolBar.add(new JLabel("Search: ")); searchField = new JTextField(30); toolBar.add(searchField); JButton b = new JButton("Find Next"); b.setActionCommand("FindNext"); b.addActionListener(this); toolBar.add(b); b = new JButton("Find Previous"); b.setActionCommand("FindPrev"); b.addActionListener(this); toolBar.add(b); regexCB = new JCheckBox("Regex"); toolBar.add(regexCB); matchCaseCB = new JCheckBox("Match Case"); toolBar.add(matchCaseCB); add(toolBar, BorderLayout.NORTH); }
/** * Update the display to show the information about the specified example. * * @param example the currently-selected example */ private void display(Example example) { if (example == null) { tabbedPane.removeAll(); runButton.setEnabled(false); } else { tabbedPane.removeAll(); JEditorPane description = new JEditorPane(); description.setContentType("text/html"); description.setText(example.getDescription()); description.setEditable(false); description.addHyperlinkListener( new HyperlinkListener() { @Override public void hyperlinkUpdate(HyperlinkEvent hle) { if (HyperlinkEvent.EventType.ACTIVATED.equals(hle.getEventType())) { Desktop desktop = Desktop.getDesktop(); try { desktop.browse(hle.getURL().toURI()); } catch (Exception ex) { // unable to launch browser } } } }); tabbedPane.addTab("Description", description); for (String resource : example.getResources()) { try { RSyntaxTextArea textArea = new RSyntaxTextArea(20, 60); if (resource.endsWith(".java")) { textArea.setSyntaxEditingStyle(SyntaxConstants.SYNTAX_STYLE_JAVA); } else { textArea.setSyntaxEditingStyle(SyntaxConstants.SYNTAX_STYLE_NONE); } textArea.setCodeFoldingEnabled(true); textArea.setText(load(resource)); textArea.setSelectionStart(0); textArea.setSelectionEnd(0); textArea.setEditable(false); RTextScrollPane sp = new RTextScrollPane(textArea); tabbedPane.addTab(new File(resource).getName(), sp); } catch (IOException ex) { ex.printStackTrace(); } } if (example.getMainClass() == null) { runButton.setEnabled(false); } else { runButton.setEnabled(true); } } }
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(); }