📄 browser.java
字号:
/** * * Set the Jemboss web browser size * */ private void setBrowserSize() { Dimension screenSize = getToolkit().getScreenSize(); int width = (int)(screenSize.width * 0.6); int height = (int)(screenSize.height * 0.85); setBounds((int)(width*.59), (int)(height*.02), width, height); } /** * * Add the html pane to a scrollpane, list and splitpane and set the * size of the html pane * */ private void addToScrollPane() { htmlPane.setEditable(false); htmlPane.setCaretPosition(0); Box bacross = Box.createHorizontalBox(); bacross.add(Box.createHorizontalGlue()); JButton listClose = new JButton() { public void paintComponent(Graphics g) { super.paintComponent(g); BasicStroke stroke = new BasicStroke(2.0f); Graphics2D g2 = (Graphics2D) g; g2.setStroke(stroke); g2.setColor(Color.gray); g2.drawLine(4,5,9,10); g2.drawLine(9,5,4,10); g2.setColor(Color.black); g2.drawLine(4,4,9,9); g2.drawLine(9,3,3,9); setSize(15,15); } }; listClose.addActionListener(this); listClose.setActionCommand("CLOSE"); listClose.setPreferredSize(new Dimension(15,15)); bacross.add(listClose); JPanel leftPane = new JPanel(new BorderLayout()); JScrollPane leftScroll = new JScrollPane(getWebScape()); leftPane.add(bacross, BorderLayout.NORTH); leftPane.add(leftScroll, BorderLayout.CENTER); leftScroll.getViewport().setBackground(Color.white); sp = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT, leftPane, htmlPane); sp.setDividerSize(8); sp.setDividerLocation(100); sp.setOneTouchExpandable(true); JScrollPane scrollPane = new JScrollPane(htmlPane); sp.add(scrollPane); // ensures html wraps properly htmlPane.setPreferredSize(getPreferredSize()); getContentPane().add(sp, BorderLayout.CENTER); // status field Border loweredbevel = BorderFactory.createLoweredBevelBorder(); Border raisedbevel = BorderFactory.createRaisedBevelBorder(); Border compound = BorderFactory.createCompoundBorder(raisedbevel,loweredbevel); statusField = new JTextField(); statusField.setBorder(compound); statusField.setEditable(false); getContentPane().add(statusField, BorderLayout.SOUTH); } /** * * Override actionPerformed * @param event action event * */ public void actionPerformed(ActionEvent event) { URL url = null; setCursor(cbusy); if (event.getSource() == urlField) { Object select = urlField.getSelectedItem(); if(select instanceof String) { try { url = new URL((String)select); } catch(MalformedURLException me){} } else url = (URL)select; } else if (event.getActionCommand().equals("JEMBOSS")) { try { url = new URL("http://emboss.sourceforge.net/Jemboss/"); } catch(MalformedURLException me){} } else if (event.getActionCommand().equals("BACK")) { int index = urlField.getIndexOf(urlField.getSelectedItem())-1; if(index > -1 && index < urlField.getItemCount()) url = urlField.getURLAt(index); } else if (event.getActionCommand().equals("FWD")) { int index = urlField.getIndexOf(urlField.getSelectedItem())+1; if(index > -1 && index < urlField.getItemCount()) url = urlField.getURLAt(index); } else if (event.getActionCommand().equals("CLOSE")) { setCursor(cdone); sp.setDividerLocation(0); return; } try { htmlPane.setPage(url); if(!urlField.isItem(url)) urlField.addURL(url); else { urlField.setSelectedItem(url); } backMenu.setEnabled(urlField.isBackPage()); backBt.setEnabled(urlField.isBackPage()); fwdMenu.setEnabled(urlField.isForwardPage()); fwdBt.setEnabled(urlField.isForwardPage()); } catch(IOException ioe) { setCursor(cdone); warnUser("Can't follow link to " + url ); } setCursor(cdone); } /** * * Method to handle hyper link events. * @param event hyper link event * */ public void hyperlinkUpdate(HyperlinkEvent event) { if(event.getEventType() == HyperlinkEvent.EventType.ACTIVATED) { setCursor(cbusy); try { URL url = event.getURL(); htmlPane.setPage(url); if(!urlField.isItem(url)) urlField.addURL(url); else { urlField.setSelectedItem(url); urlField.setLastIndex(url); } } catch(IOException ioe) { setCursor(cdone); warnUser("Can't follow link to " + event.getDescription() ); } setCursor(cdone); } else if(event.getEventType() == HyperlinkEvent.EventType.ENTERED) statusField.setText(event.getDescription()); else if(event.getEventType() == HyperlinkEvent.EventType.EXITED) statusField.setText(""); } /** * * Display a warning message * @param message message to display * */ private void warnUser(String message) { JOptionPane.showMessageDialog(this, message, "Warning", JOptionPane.ERROR_MESSAGE); } /** * * Used to draw a Shape. * */ public static GeneralPath makeShape(float loc[][]) { GeneralPath path = new GeneralPath(GeneralPath.WIND_NON_ZERO); path.moveTo(loc[0][0],loc[0][1]); for(int i=1; i<loc.length; i++) path.lineTo(loc[i][0],loc[i][1]); return path; } /** * * Jemboss icon button * */ public class JIconButton extends JButton { public JIconButton(ImageIcon ii) { super(ii); setContentAreaFilled(false); setBorderPainted(false); setFocusPainted(false); } } public JTree getWebScape() { DefaultMutableTreeNode top = new DefaultMutableTreeNode("Jemboss WebScape"); createNodes(top); final JTree webScape = new JTree(top); webScape.setShowsRootHandles(true); webScape.expandRow(1); webScape.getSelectionModel().setSelectionMode (TreeSelectionModel.SINGLE_TREE_SELECTION); webScape.addTreeSelectionListener(new TreeSelectionListener() { public void valueChanged(TreeSelectionEvent e) { ClassLoader cl = this.getClass().getClassLoader(); DefaultMutableTreeNode node = (DefaultMutableTreeNode) webScape.getLastSelectedPathComponent(); if (node == null) return; Object nodeInfo = node.getUserObject(); if(node.isLeaf()) { String loc = null; DefaultMutableTreeNode parent = (DefaultMutableTreeNode)node.getParent(); String category = (String)parent.getUserObject(); String selectedValue = (String)nodeInfo; URL inURL = null; if(selectedValue.equals("File Manager")) inURL = cl.getResource("resources/filemgr.html"); else if(selectedValue.equals("About")) inURL = cl.getResource("resources/readme.html"); else if(selectedValue.equals("Alignment Editor")) inURL = cl.getResource("resources/readmeAlign.html"); else if(selectedValue.equals("Sequence List")) inURL = cl.getResource("resources/seqList.html"); else if(selectedValue.equals("Results Manager")) inURL = cl.getResource("resources/results.html"); else if (selectedValue.equals("User Guide")) loc = "http://emboss.sourceforge.net/Jemboss/guide.html"; else if(selectedValue.equals("Home") && category.equals("Jemboss")) loc = "http://emboss.sourceforge.net/Jemboss/"; else if(selectedValue.equals("Home") && category.equals("EMBOSS")) loc = "http://emboss.sourceforge.net/"; else if(selectedValue.equals("Apps") && category.equals("EMBOSS")) loc = "http://emboss.sourceforge.net/apps/release/4.0/emboss/apps/"; if(loc != null) { try { inURL = new URL(loc); } catch(MalformedURLException me) { warnUser("Can't follow link to " + loc); } } if(inURL != null) { try { htmlPane.setPage(inURL); if(!urlField.isItem(inURL)) urlField.addURL(inURL); else { urlField.setSelectedItem(inURL); urlField.setLastIndex(inURL); } } catch(IOException ioe) { setCursor(cdone); warnUser("Can't follow link to " + inURL ); } backMenu.setEnabled(urlField.isBackPage()); backBt.setEnabled(urlField.isBackPage()); fwdMenu.setEnabled(urlField.isForwardPage()); fwdBt.setEnabled(urlField.isForwardPage()); } } } }); webScape.setRootVisible(false); return webScape; } private void createNodes(DefaultMutableTreeNode top) { DefaultMutableTreeNode category = null; DefaultMutableTreeNode topic = null; category = new DefaultMutableTreeNode("Jemboss"); top.add(category); for(int i=0; i<topics.length; i++) { topic = new DefaultMutableTreeNode(topics[i]); category.add(topic); } category = new DefaultMutableTreeNode("EMBOSS"); top.add(category); for(int i=0; i<embossTopics.length; i++) { topic = new DefaultMutableTreeNode(embossTopics[i]); category.add(topic); } } public static void main(String args[]) { ClassLoader cl = ClassLoader.getSystemClassLoader(); try { URL inURL = cl.getResource("resources/seqList.html"); new Browser(inURL,"resources/seqList.html"); } catch (Exception iex) { System.out.println("Didn't find resources/seqList.html"); } }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -