package br.ufpr.c3sl.view.PageHTML; import java.awt.BorderLayout; import java.awt.Color; import java.awt.Dimension; import java.awt.Font; import javax.swing.BorderFactory; import javax.swing.JEditorPane; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.event.HyperlinkEvent; import javax.swing.event.HyperlinkListener; import javax.swing.text.html.HTMLEditorKit; import javax.swing.text.html.StyleSheet; import br.ufpr.c3sl.view.glossary.GlossaryGUI; import br.ufpr.c3sl.view.principal.JpCarrie; //import br.ufpr.c3sl.condigital.app.view.glossary.GlossaryGUI; public class JPanelHTML extends JPanel{ private static final long serialVersionUID = -2837566491870483686L; private String textualContent = null; private String title = null; private JEditorPane content = new JEditorPane(){ private static final long serialVersionUID = -575473651471656605L; }; private JPanel mainPanel = null; public JPanelHTML() { this.setLayout(new BorderLayout()); } public String getTextualContent() { return textualContent; } public void setTextualContent(String textualContent) { this.textualContent = textualContent; } public String getTitle() { return title; } public void setTitle(String title) { this.title = title; } public void refreshPane() { if (getTextualContent() != null) { content.removeAll(); content.setContentType("text/html"); content.setText(getTextualContent()); content.setEditable(false); content.setBackground(new Color(238, 238, 238)); mainPanel.add(content, BorderLayout.CENTER); } } @SuppressWarnings("serial") public void create() { mainPanel = new JPanel(new BorderLayout()){ public Dimension getPreferredSize(){ Dimension d = super.getPreferredSize(); d.width = 5; return d; } }; JScrollPane scroll = new JScrollPane(mainPanel); scroll.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_NEVER); scroll.setBorder(BorderFactory.createEmptyBorder()); content.addHyperlinkListener(new JPanelHTMLHyperlinkListener()); if (title != null){ JPanel jpanelTitle = new JPanel(); JLabel labelTitle = new JLabel(); labelTitle.setFont(new Font("Verdana",Font.BOLD,14)); labelTitle.setText(title); jpanelTitle.add(labelTitle); mainPanel.add(jpanelTitle, BorderLayout.NORTH); } refreshPane(); add(scroll, BorderLayout.CENTER); } public StyleSheet getStyleSheetFromEditorPane(){ javax.swing.text.html.HTMLEditorKit kit = (HTMLEditorKit) content.getEditorKit(); return kit.getStyleSheet(); } private class JPanelHTMLHyperlinkListener implements HyperlinkListener { public void hyperlinkUpdate(HyperlinkEvent e) { if (HyperlinkEvent.EventType.ACTIVATED == e.getEventType()){ if (e.getURL() != null){ String url = e.getURL().toString(); java.awt.Desktop desktop = java.awt.Desktop.getDesktop(); try { java.net.URI uri = new java.net.URI(url); desktop.browse(uri); } catch (Exception err) { System.err.println(err.getMessage()); } } else{ String info[] = e.getDescription().split(":"); if (info[0].compareTo("glossary") == 0) GlossaryGUI.updateHyperLink(info[1]); else if (info[0].compareTo("page") == 0) JpCarrie.getInstance().getPaginator().moveToIndex(Integer.parseInt(info[1])); } } } } }