// This file is part of Nanobrowser. // Copyright 2012, Tobias Kuhn, http://www.tkuhn.ch // // Nanobrowser 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. // // Nanobrowser 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 Nanobrowser. // If not, see http://www.gnu.org/licenses/. package ch.tkuhn.nanobrowser; import org.apache.wicket.markup.html.WebMarkupContainer; import org.apache.wicket.markup.html.basic.Label; import org.apache.wicket.markup.html.panel.Panel; public class TriplePanel extends Panel { private static final long serialVersionUID = -5109507637942030910L; private int settings; public static final int SHOW_SUBJECT = 0x01; public static final int SHOW_PREDICATE = 0x02; public static final int SHOW_OBJECT = 0x04; public static final int SHOW_FULLSTOP = 0x08; public static final int SUBJECT_PREDICATE = SHOW_SUBJECT | SHOW_PREDICATE | SHOW_FULLSTOP; public static final int PREDICATE_OBJECT = SHOW_PREDICATE | SHOW_OBJECT | SHOW_FULLSTOP; public static final int SHOW_ALL = SHOW_SUBJECT | SHOW_PREDICATE | SHOW_OBJECT | SHOW_FULLSTOP; public static final int START_WITH_PREDICATE = 0x10; public static final int PREDICATE_SUBJECT = SHOW_SUBJECT | SHOW_PREDICATE | START_WITH_PREDICATE; public TriplePanel(String id, Triple<?,?> triple, int settings) { super(id); this.settings = settings; if (isFlagSet(SHOW_SUBJECT)) { add(triple.getSubject().createGUIItem("subject")); } else { hide("subject"); } if (isFlagSet(SHOW_PREDICATE)) { if (isFlagSet(START_WITH_PREDICATE)) { add(triple.getPredicate().createGUIItem("predicatefirst", ThingElement.PREDICATEFIRST_ITEM)); hide("predicate"); } else { add(triple.getPredicate().createGUIItem("predicate")); hide("predicatefirst"); } } else { hide("predicatefirst"); hide("predicate"); } if (isFlagSet(SHOW_OBJECT)) { Object obj = triple.getObject(); if (obj instanceof ThingElement) { add(((ThingElement) obj).createGUIItem("object")); } else { add(new Label("object", "\"" + obj.toString() + "\"")); } } else { hide("object"); } if (isFlagSet(SHOW_FULLSTOP)) { add(new Label("end", ".")); } else { hide("end"); } WebMarkupContainer ref = new WebMarkupContainer("reference"); if (triple.getNanopub() == null) { ref.setVisible(false); ref.add(new Label("nanopub")); } else { ref.add(new NanopubItem("nanopub", triple.getNanopub(), ThingElement.TINY_GUI_ITEM)); } add(ref); } public TriplePanel(String id, Triple<?,?> triple) { this(id, triple, SHOW_ALL); } private void hide(String id) { Label l = new Label(id); l.setVisible(false); add(l); } private boolean isFlagSet(int flag) { return (settings & flag) == flag; } }