From: <hee...@us...> - 2009-11-04 16:18:58
|
Revision: 1905 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=1905&view=rev Author: heeroyuy Date: 2009-11-04 16:18:47 +0000 (Wed, 04 Nov 2009) Log Message: ----------- -added new HyperLinkListener -some small changes Modified Paths: -------------- trunk/src/dl-learner/org/dllearner/tools/protege/ActionHandler.java trunk/src/dl-learner/org/dllearner/tools/protege/DLLearnerModel.java trunk/src/dl-learner/org/dllearner/tools/protege/DLLearnerView.java trunk/src/dl-learner/org/dllearner/tools/protege/META-INF/MANIFEST.MF trunk/src/dl-learner/org/dllearner/tools/protege/ReadingOntologyThread.java Added Paths: ----------- trunk/src/dl-learner/org/dllearner/tools/protege/HyperLinkHandler.java Modified: trunk/src/dl-learner/org/dllearner/tools/protege/ActionHandler.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/protege/ActionHandler.java 2009-11-04 10:26:47 UTC (rev 1904) +++ trunk/src/dl-learner/org/dllearner/tools/protege/ActionHandler.java 2009-11-04 16:18:47 UTC (rev 1905) @@ -30,7 +30,7 @@ import javax.swing.DefaultListModel; import javax.swing.JOptionPane; -import javax.swing.JTextArea; +import javax.swing.JTextPane; import javax.swing.SwingUtilities; import javax.swing.SwingWorker; @@ -51,6 +51,7 @@ // This is the DLLearnerModel. private final DLLearnerModel model; + private HyperLinkHandler hyperHandler; // This is the id that checks if the equivalent class or subclass button is // pressed in protege @@ -66,7 +67,7 @@ private final Color colorGreen = new Color(0, 139, 0); private final DLLearnerView view; private static final String HELP_BUTTON_STRING = "help"; - private JTextArea help; + private JTextPane help; private static final String ADD_BUTTON_STRING = "<html>ADD</html>"; private static final String ADVANCED_BUTTON_STRING = "Advanced"; private static final String EQUIVALENT_CLASS_LEARNING_STRING = "<html>suggest equivalent class expression</html>"; @@ -85,6 +86,7 @@ this.view = view; this.model = m; toggled = false; + hyperHandler = view.getHyperLinkHandler(); } @@ -108,10 +110,10 @@ view.getHintPanel().setForeground(Color.RED); CELOE celoe = (CELOE) model.getLearningAlgorithm(); - String moreInformationsMessage = "Learning started. Currently searching class expressions with length between " + String moreInformationsMessage = "<html><font size=\"3\">Learning started. Currently searching class expressions with length between " + celoe.getMinimumHorizontalExpansion() + " and " - + celoe.getMaximumHorizontalExpansion() + "."; + + celoe.getMaximumHorizontalExpansion() + ".</font></html>"; view.setHelpButtonVisible(true); view.setHintMessage(moreInformationsMessage); retriever = new SuggestionRetriever(); @@ -130,7 +132,7 @@ .getSuggestClassPanel().getSuggestList() .getSelectedValue()); } - String message = "class expression added"; + String message = "<html><font size=\"3\">class expression added</font></html>"; view.setHintMessage(message); view.setHelpButtonVisible(false); } @@ -146,18 +148,21 @@ } } if (z.toString().contains(HELP_BUTTON_STRING)) { - String helpText = "What does a sentence like 'Learning started. Currently searching class expressions with length between 4 and 7.' mean?\n" - + "Length: In Manchester OWL Syntax (the syntax used for class expressions in Protege), we define length simply as the number of words needed to write down the class expression.\n\n" - + "The learning algorithm (called CELOE) for suggesting class expressions starts with the most general expression owl:Thing and then further specializes it.\n" - + "Those class expressions, which fit the existing instances of a given class ($currentClass in this case) get a high accuracy and are displayed as suggestions.\n" - + "The learning algorithm prefers short expressions. 'Currently searching class expressions with length between 4 and 7.' means that it has already evaluated all class expressions of length 1 to 3\n" - + "or excluded them as possible suggestions. All the expressions currently evaluated have length between 4 and 7. If you want to search for longer expressions, then you have to increase\n" - + "the maximum runtime setting (it is set to $defaultRuntime seconds by default).\n\n" - + "See <a href=\"http://dl-learner.org/wiki/ProtegePlugin\">http://dl-learner.org/wiki/ProtegePlugin</a> for more details."; + String helpText = "<html><font size=\"3\">What does a sentence like 'Learning started. Currently searching class expressions with length between 4 and 7.' mean?<br>" + + "Length: In Manchester OWL Syntax (the syntax used for class expressions in Protege), we define length simply as the number of words needed to write down the class expression.<br><br>" + + "The learning algorithm (called CELOE) for suggesting class expressions starts with the most general expression owl:Thing and then further specializes it.<br>" + + "Those class expressions, which fit the existing instances of a given class ($currentClass in this case) get a high accuracy and are displayed as suggestions.<br>" + + "The learning algorithm prefers short expressions. 'Currently searching class expressions with length between 4 and 7.' means that it has already evaluated all class expressions of length 1 to 3<br>" + + "or excluded them as possible suggestions. All the expressions currently evaluated have length between 4 and 7. If you want to search for longer expressions, then you have to increase<br>" + + "the maximum runtime setting (it is set to $defaultRuntime seconds by default).<br><br>" + + "See <a href=\"http://dl-learner.org/wiki/ProtegePlugin\">http://dl-learner.org/wiki/ProtegePlugin</a> for more details.</font></html>"; - help = new JTextArea(); + help = new JTextPane(); help.setEditable(false); + help.setContentType("text/html"); help.setForeground(Color.black); + help.addHyperlinkListener(hyperHandler); + help.setBackground(view.getLearnerView().getBackground()); help.setText(helpText); JOptionPane.showMessageDialog(null, help, "Help", @@ -212,10 +217,10 @@ .getNrOfConcepts())); CELOE celoe = (CELOE) model.getLearningAlgorithm(); view.getHintPanel().setForeground(Color.RED); - String moreInformationsMessage = "Learning started. Currently searching class expressions with length between " + String moreInformationsMessage = "<html><font size=\"3\">Learning started. Currently searching class expressions with length between " + celoe.getMinimumHorizontalExpansion() + " and " - + celoe.getMaximumHorizontalExpansion() + "."; + + celoe.getMaximumHorizontalExpansion() + ".</font></html>"; view.setHintMessage(moreInformationsMessage); } } Modified: trunk/src/dl-learner/org/dllearner/tools/protege/DLLearnerModel.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/protege/DLLearnerModel.java 2009-11-04 10:26:47 UTC (rev 1904) +++ trunk/src/dl-learner/org/dllearner/tools/protege/DLLearnerModel.java 2009-11-04 16:18:47 UTC (rev 1905) @@ -265,8 +265,8 @@ try { currentConceptURL = new URL(currentConcept.toString()); } catch (MalformedURLException e1) { - String error = "Cannot convert to URL."; - view.renderErrorMessage(error); + String error = "<html>Cannot convert to URL.</html>"; + view.setHintMessage(error); e1.printStackTrace(); } cm.applyConfigEntry(lp, "classToDescribe", currentConceptURL); Modified: trunk/src/dl-learner/org/dllearner/tools/protege/DLLearnerView.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/protege/DLLearnerView.java 2009-11-04 10:26:47 UTC (rev 1904) +++ trunk/src/dl-learner/org/dllearner/tools/protege/DLLearnerView.java 2009-11-04 16:18:47 UTC (rev 1905) @@ -36,7 +36,7 @@ import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JScrollPane; -import javax.swing.JTextArea; +import javax.swing.JTextPane; import javax.swing.JToggleButton; import org.dllearner.algorithms.celoe.CELOE; @@ -54,6 +54,8 @@ private static final long serialVersionUID = 624829578325729385L; + //TODO: gucken wie geht + private HyperLinkHandler hyperHandler; // this is the Component which shows the view of the dllearner private final JComponent learner; @@ -69,14 +71,6 @@ private final JLabel adv; - // This is the color for the error message. It is red. - - private final Color colorRed = Color.red; - - // This is the text area for the error message when an error occurred - - private final JTextArea errorMessage; - // Advanced Button to activate/deactivate the example select panel private final JToggleButton advanced; @@ -103,10 +97,10 @@ // Picture of the advanced button when it is toggled private final JPanel addButtonPanel; - private final JLabel wikiPane; + private final JTextPane wikiPane; private final ImageIcon toggledIcon; private ImageIcon helpIcon; - private final JTextArea hint; + private final JTextPane hint; private JButton helpButton; private final JPanel runPanel; private final JPanel advancedPanel; @@ -129,6 +123,7 @@ private int individualSize; private SuggestClassPanelHandler sugPanelHandler; private StatusBar stat; + private static final String WIKI_STRING = "<html><font size=\"3\">See <a href=\"http://dl-learner.org/wiki/ProtegePlugin\">http://dl-learner.org/wiki/ProtegePlugin</a> for an introduction.</font></html>"; /** * The constructor for the DL-Learner tab in the class description @@ -147,7 +142,10 @@ learnerPanel.setLayout(new BorderLayout()); learnerScroll = new JScrollPane(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED, JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED); action = new ActionHandler(model, this); - wikiPane = new JLabel("<html>See <a href=\"http://dl-learner.org/wiki/ProtegePlugin\">http://dl-learner.org/wiki/ProtegePlugin</a> for an introduction.</html>"); + wikiPane = new JTextPane(); + wikiPane.setContentType("text/html"); + wikiPane.setBackground(learnerScroll.getBackground()); + wikiPane.setText(WIKI_STRING); URL iconUrl = this.getClass().getResource("arrow.gif"); icon = new ImageIcon(iconUrl); URL toggledIconUrl = this.getClass().getResource("arrow2.gif"); @@ -167,12 +165,12 @@ accept = new JButton("<html>ADD</html>"); addButtonPanel = new JPanel(new BorderLayout()); stat = new StatusBar(); - errorMessage = new JTextArea(); - errorMessage.setEditable(false); - hint = new JTextArea(); + hint = new JTextPane(); + hint.setBackground(learnerScroll.getBackground()); + hint.setContentType("text/html"); hint.setEditable(false); - hint.setText("To get suggestions for class expression, please click the button above."); - hint.setPreferredSize(new Dimension(485, 30)); + hint.setText("<html><font size=\"3\">To get suggestions for class expression, please click the button above.</font></html>"); + hint.addHyperlinkListener(hyperHandler); learner = new JPanel(); advanced.setSize(20, 20); learner.setLayout(new GridBagLayout()); @@ -186,6 +184,7 @@ sugPanelHandler = new SuggestClassPanelHandler(this, model, action); sugPanel.addSuggestPanelMouseListener(sugPanelHandler); sugPanel.getSuggestList().addListSelectionListener(sugPanelHandler); + hyperHandler = new HyperLinkHandler(); this.addAcceptButtonListener(this.action); this.addRunButtonListener(this.action); this.addAdvancedButtonListener(this.action); @@ -216,7 +215,7 @@ helpButton.setVisible(false); hint.setForeground(Color.BLACK); - hint.setText("To get suggestions for class expression, please click the button above."); + hint.setText("<html><font size=\"3\">To get suggestions for class expression, please click the button above.</font></html>"); String currentConcept = editorKit.getOWLWorkspace().getOWLSelectionModel().getLastSelectedClass().toString(); if(!labels.equals(currentConcept) || individualSize != editorKit.getModelManager().getActiveOntology().getIndividualAxioms().size()) { if(individualSize != editorKit.getModelManager().getActiveOntology().getIndividualAxioms().size()) { @@ -281,7 +280,6 @@ c.weighty = 0.0; c.gridx = 0; c.gridy = 3; - hint.setPreferredSize(new Dimension(450, 60)); helpButton.setPreferredSize(new Dimension(30, 30)); hintPanel.add(BorderLayout.CENTER, hint); hintPanel.add(BorderLayout.EAST, helpButton); @@ -318,7 +316,6 @@ detail.setVisible(true); sugPanel.setVisible(true); learnerScroll.setViewportView(learner); - this.renderErrorMessage(""); this.getSuggestClassPanel().getSuggestModel().clear(); } @@ -396,7 +393,7 @@ * This method returns the hint panel. * @return hint panel */ - public JTextArea getHintPanel() { + public JTextPane getHintPanel() { return hint; } @@ -451,19 +448,10 @@ public void unsetEverything() { run.setEnabled(true); model.getNewOWLDescription().clear(); - errorMessage.setText(""); learner.removeAll(); } /** - * Renders the error message when an error occured. - * @param s String - */ - public void renderErrorMessage(String s) { - errorMessage.setForeground(colorRed); - errorMessage.setText(s); - } - /** * This Method returns the panel for more details for the chosen concept. * @return MoreDetailForSuggestedConceptsPanel */ @@ -524,18 +512,16 @@ */ public void algorithmTerminated() { CELOE celoe = (CELOE) model.getLearningAlgorithm(); - String error = "Learning successful. All expressions up to length " + (celoe.getMinimumHorizontalExpansion()-1) + " and some expressions up to \nlength " + celoe.getMaximumHorizontalExpansion() + " searched."; + String message = "<html><font size=\"3\">Learning successful. All expressions up to length " + (celoe.getMinimumHorizontalExpansion()-1) + " and some expressions up to <br>length " + celoe.getMaximumHorizontalExpansion() + " searched."; hint.setForeground(Color.RED); - this.setHintMessage(error); - String message = ""; if(isInconsistent) { - message ="\nClass expressions marked red will lead to an inconsistent ontology. \nPlease double click on them to view detail information."; + message +="<br>Class expressions marked red will lead to an inconsistent ontology. <br>Please double click on them to view detail information.</font></html>"; } else { - message ="\nTo view details about why a class expression was suggested, please click on it."; + message +="<br>To view details about why a class expression was suggested, please click on it.</font><html>"; } run.setEnabled(true); // start the algorithm and print the best concept found; - hint.append(message); + this.setHintMessage(message); } /** @@ -591,4 +577,9 @@ public StatusBar getStatusBar() { return stat; } + + public HyperLinkHandler getHyperLinkHandler() { + return hyperHandler; + } + } Added: trunk/src/dl-learner/org/dllearner/tools/protege/HyperLinkHandler.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/protege/HyperLinkHandler.java (rev 0) +++ trunk/src/dl-learner/org/dllearner/tools/protege/HyperLinkHandler.java 2009-11-04 16:18:47 UTC (rev 1905) @@ -0,0 +1,52 @@ +package org.dllearner.tools.protege; + +import java.awt.Cursor; +import java.net.MalformedURLException; +import java.net.URL; + +import javax.swing.JEditorPane; +import javax.swing.event.HyperlinkEvent; +import javax.swing.event.HyperlinkListener; + +import edu.stanford.ejalbert.BrowserLauncher; +import edu.stanford.ejalbert.exception.BrowserLaunchingInitializingException; +import edu.stanford.ejalbert.exception.UnsupportedOperatingSystemException; + +public class HyperLinkHandler implements HyperlinkListener { + + private BrowserLauncher launcher; + + public HyperLinkHandler() { + try { + launcher = new BrowserLauncher(); + } catch (BrowserLaunchingInitializingException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } catch (UnsupportedOperatingSystemException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + } + + @Override + public void hyperlinkUpdate(HyperlinkEvent event) { + if (event.getEventType() == HyperlinkEvent.EventType.ENTERED) { + ((JEditorPane) event.getSource()).setCursor(Cursor + .getPredefinedCursor(Cursor.HAND_CURSOR)); + } else if (event.getEventType() == HyperlinkEvent.EventType.EXITED) { + ((JEditorPane) event.getSource()).setCursor(Cursor + .getPredefinedCursor(Cursor.DEFAULT_CURSOR)); + } else if (event.getEventType() == HyperlinkEvent.EventType.ACTIVATED) { + URL url; + try { + url = new URL(event.getDescription()); + launcher.openURLinBrowser(url.toString()); + } catch (MalformedURLException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + } + + } + +} Modified: trunk/src/dl-learner/org/dllearner/tools/protege/META-INF/MANIFEST.MF =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/protege/META-INF/MANIFEST.MF 2009-11-04 10:26:47 UTC (rev 1904) +++ trunk/src/dl-learner/org/dllearner/tools/protege/META-INF/MANIFEST.MF 2009-11-04 16:18:47 UTC (rev 1905) @@ -6,7 +6,7 @@ Bundle-Description: Protege DL-Learner Plugin Bundle-Vendor: DL-Learner Project Bundle-DocURL: http://dl-learner.org/wiki/ProtegePlugin -Bundle-ClassPath: .,lib/junit-4.4.jar,lib/jamon-2.7.jar,lib/pellet/pellet-core.jar,lib/pellet/pellet-datatypes.jar,lib/pellet/pellet-el.jar,lib/pellet/pellet-explanation.jar,lib/pellet/pellet-owlapi.jar,lib/pellet/pellet-rules.jar,lib/pellet/aterm-java-1.6.jar,lib/jena/json.jar,lib/pellet/relaxngDatatype.jar,lib/pellet/xsdlib.jar,lib/jena/commons-logging-1.1.1.jar,lib/ore-tool/swingx-0.9.2.jar +Bundle-ClassPath: .,lib/junit-4.4.jar,lib/jamon-2.7.jar,lib/pellet/pellet-core.jar,lib/pellet/pellet-datatypes.jar,lib/ore-tool/BrowserLauncher2-all-1_3.jar,lib/pellet/pellet-el.jar,lib/pellet/pellet-explanation.jar,lib/pellet/pellet-owlapi.jar,lib/pellet/pellet-rules.jar,lib/pellet/aterm-java-1.6.jar,lib/jena/json.jar,lib/pellet/relaxngDatatype.jar,lib/pellet/xsdlib.jar,lib/jena/commons-logging-1.1.1.jar,lib/ore-tool/swingx-0.9.2.jar Import-Package: org.osgi.framework,org.apache.log4j Export-Package: lib Bundle-Version: 0.5.2 Modified: trunk/src/dl-learner/org/dllearner/tools/protege/ReadingOntologyThread.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/protege/ReadingOntologyThread.java 2009-11-04 10:26:47 UTC (rev 1904) +++ trunk/src/dl-learner/org/dllearner/tools/protege/ReadingOntologyThread.java 2009-11-04 16:18:47 UTC (rev 1905) @@ -87,7 +87,6 @@ if(current != null) { SortedSet<Individual> individuals = null; hasIndividuals = false; - System.out.println("hier: " + editor.getOWLModelManager().getActiveOntology().getAxioms(current)); // checks if selected concept is thing when yes then it selects all // individuals if (!(current.toString().equals("Thing"))) { @@ -167,7 +166,7 @@ @Override public void run() { - String loading ="loading instances..."; + String loading ="<html><font size=\"3\">loading instances...</font></html>"; view.getHintPanel().setForeground(Color.RED); view.setHintMessage(loading); if(!model.isReasonerSet() || model.getIsKnowledgeSourceIsUpdated() == true) { @@ -182,12 +181,12 @@ if (this.hasIndividuals()) { view.getRunButton().setEnabled(true); view.getHintPanel().setForeground(Color.BLACK); - view.setHintMessage("To get suggestions for class descriptions, please click the button above."); + view.setHintMessage("<html><font size=\"3\">To get suggestions for class descriptions, please click the button above.</font></html>"); } else { view.getRunButton().setEnabled(false); view.getHintPanel().setVisible(true); - String message ="There are no Instances for " + current + " available. Please insert some Instances."; + String message ="<html><font size=\"3\">There are no Instances for " + current + " available. Please insert some Instances.</font></html>"; view.getHintPanel().setForeground(Color.RED); view.setHintMessage(message); } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |