org.icepdf.ri.common.utility.layers.LayersTreeNode Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of icepdf-viewer Show documentation
Show all versions of icepdf-viewer Show documentation
ICEpdf PDF Viewer Reference Implementation (RI)
/*
* Copyright 2006-2016 ICEsoft Technologies Inc.
*
* 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 org.icepdf.ri.common.utility.layers;
import org.icepdf.core.pobjects.OptionalContentGroup;
import javax.swing.tree.DefaultMutableTreeNode;
import java.util.Enumeration;
/**
* The LayersTreeNode represent a group of optional content members or just
* one optional content group. The user object for this DefaultMutableTreeNode
* must always be of type OptionalContentGroup. The OptionalContentGroup object
* is a reference to the OptionalContentGroup in the document's dictionary
* and any visibility changes will be reflected in the next Page paint.
*
* @since 5.0
*/
@SuppressWarnings("serial")
public class LayersTreeNode extends DefaultMutableTreeNode {
/**
* Node selection is independent of other nodes.
*/
public final static int SINGLE_SELECTION = 1;
/**
* Nodes behave like radio check boxes where only one can be selected
* at a time.
*/
public final static int RADIO_SELECTION = 2;
protected int selectionMode = SINGLE_SELECTION;
public LayersTreeNode(Object object) {
OptionalContentGroup optionalContentGroup = null;
if (object instanceof String) {
optionalContentGroup = new OptionalContentGroup((String) object, false);
} else if (object instanceof OptionalContentGroup) {
optionalContentGroup = (OptionalContentGroup) object;
}
setUserObject(optionalContentGroup);
}
public LayersTreeNode(OptionalContentGroup optionalContentGroup) {
this(optionalContentGroup, true);
setUserObject(optionalContentGroup);
}
public LayersTreeNode(Object userObject, boolean allowsChildren) {
super(userObject, allowsChildren);
}
public void setSelectionMode(int mode) {
selectionMode = mode;
}
public int getSelectionMode() {
return selectionMode;
}
public OptionalContentGroup getOptionalContentGroup() {
return (OptionalContentGroup) getUserObject();
}
public void setSelected(boolean isSelected) {
((OptionalContentGroup) getUserObject()).setVisible(isSelected);
// if the node is a branch (has children), propagate the selection
// in to the child notes.
if ((selectionMode == SINGLE_SELECTION)
&& (children != null)) {
LayersTreeNode layerNode;
for (Object child : children) {
layerNode = (LayersTreeNode) child;
layerNode.setSelected(isSelected);
}
}
// only one node cn be selected at one.
else if (selectionMode == RADIO_SELECTION) {
// deselect other nodes.
Enumeration children = parent.children();
if (children != null) {
LayersTreeNode layerNode;
while (children.hasMoreElements()) {
layerNode = (LayersTreeNode) children.nextElement();
if (!layerNode.equals(this)) {
layerNode.getOptionalContentGroup().setVisible(false);
}
}
}
}
}
public boolean isSelected() {
return ((OptionalContentGroup) getUserObject()).isVisible();
}
@Override
public String toString() {
return ((OptionalContentGroup) getUserObject()).getName();
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy