// This file is part of AceWiki.
// Copyright 2008-2013, AceWiki developers.
//
// AceWiki is free software: you can redistribute it and/or modify it under the terms of the GNU
// Lesser General Public License as published by the Free Software Foundation, either version 3 of
// the License, or (at your option) any later version.
//
// AceWiki is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without
// even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
// Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public License along with AceWiki. If
// not, see http://www.gnu.org/licenses/.
package ch.uzh.ifi.attempto.acewiki.gui;
import nextapp.echo.app.ApplicationInstance;
import nextapp.echo.app.Color;
import ch.uzh.ifi.attempto.acewiki.Task;
import ch.uzh.ifi.attempto.acewiki.Wiki;
import ch.uzh.ifi.attempto.acewiki.core.AceWikiReasoner;
import ch.uzh.ifi.attempto.acewiki.core.Concept;
import ch.uzh.ifi.attempto.acewiki.core.OntologyElement;
import ch.uzh.ifi.attempto.echocomp.EchoThread;
/**
* This class stands for an article page showing the article of a concept. At the
* moment, concepts are represented only by nouns.
*
* @author Tobias Kuhn
*/
public class ConceptPage extends ArticlePage {
private static final long serialVersionUID = -505381176379658743L;
private Concept concept;
/**
* Creates a new article page for a concept.
*
* @param concept The concept.
* @param wiki The wiki instance.
*/
protected ConceptPage(Concept concept, Wiki wiki) {
super(wiki, concept);
this.concept = concept;
}
public OntologyElement getOntologyElement() {
return concept;
}
protected void doUpdate() {
super.doUpdate();
getTitle().setText(getHeading(concept));
EchoThread thread = new EchoThread() {
public ApplicationInstance getApplication() {
return getWiki().getApplication();
}
public void run() {
synchronized (getWiki().getApplication()) {
getWiki().enqueueWeakAsyncTask(new Task() {
private boolean satisfiable;
public void run() {
AceWikiReasoner r = concept.getOntology().getReasoner();
satisfiable = r.isSatisfiable(concept);
}
public void updateGUI() {
if (satisfiable) {
getTitle().setColor(Color.BLACK);
} else {
getTitle().setColor(new Color(193, 0, 0));
}
}
});
try {
sleep(500);
} catch (InterruptedException ex) {}
}
}
};
thread.setPriority(Thread.MIN_PRIORITY);
thread.start();
}
}