/* * #! * Ontopoly Editor * #- * Copyright (C) 2001 - 2013 The Ontopia Project * #- * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * !# */ package ontopoly.model; import java.util.Collection; import net.ontopia.topicmaps.core.TopicIF; import ontopoly.utils.OntopolyModelUtils; public class ViewModes { private final boolean readOnly; private final boolean traversable; private final boolean hidden; private final boolean embedded; ViewModes(FieldDefinition fieldDefinition, FieldsView view) { TopicMap tm = fieldDefinition.getTopicMap(); Collection<TopicIF> viewModes = getSpecifiedViewModes(fieldDefinition, view); this.readOnly = viewModes.contains(OntopolyModelUtils.getTopicIF(tm, PSI.ON_VIEW_MODE_READ_ONLY)); this.hidden = viewModes.contains(OntopolyModelUtils.getTopicIF(tm, PSI.ON_VIEW_MODE_HIDDEN)); this.traversable = !viewModes.contains(OntopolyModelUtils.getTopicIF(tm, PSI.ON_VIEW_MODE_NOT_TRAVERSABLE)); this.embedded = viewModes.contains(OntopolyModelUtils.getTopicIF(tm, PSI.ON_VIEW_MODE_EMBEDDED)); } private Collection<TopicIF> getSpecifiedViewModes(FieldDefinition fieldDefinition, FieldsView view) { TopicMap tm = fieldDefinition.getTopicMap(); TopicIF aType = OntopolyModelUtils.getTopicIF(tm, PSI.ON, "use-view-mode"); TopicIF rType1 = OntopolyModelUtils.getTopicIF(tm, PSI.ON, "field-definition"); TopicIF player1 = fieldDefinition.getTopicIF(); TopicIF rType2 = OntopolyModelUtils.getTopicIF(tm, PSI.ON, "fields-view"); TopicIF player2 = view.getTopicIF(); TopicIF rType3 = OntopolyModelUtils.getTopicIF(tm, PSI.ON, "view-mode"); return OntopolyModelUtils.findTernaryPlayers(tm, aType, player1, rType1, player2, rType2, rType3); } public boolean isReadOnly() { return readOnly; } public boolean isTraversable() { return traversable; } public boolean isHidden() { return hidden; } public boolean isEmbedded() { return embedded; } }