/**
* XRayable.java
* Copyright (C) 2010 New Zealand Digital Library, http://expeditee.org
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program 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 General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see .
*/
package org.expeditee.items;
import java.util.Collection;
import java.util.LinkedList;
import java.util.List;
import org.expeditee.core.Colour;
import org.expeditee.core.Point;
import org.expeditee.encryption.items.surrogates.Label;
import org.expeditee.gui.DisplayController;
public abstract class XRayable extends Item {
protected Text _source = null;
public XRayable(Text source){
super();
_source = source;
source.setHidden(true);
source.addEnclosure(this);
}
@Override
public Item getPrimary() {
return _source.getPrimary();
}
@Override
public boolean isSurrogate() {
return _source.isSurrogate();
}
@Override
public void setEncryptionLabel(String label) {
_source.setEncryptionLabel(label);
}
public boolean sourceIsAccessible() {
String encryptionLabel = _source.getEncryptionLabel();
if (encryptionLabel == null || encryptionLabel.isEmpty()) {
return true;
} else {
List accessibleLabelsNames = Label.getAccessibleLabelsNames(this.getParent().getBody());
return accessibleLabelsNames.contains(encryptionLabel);
}
}
public Collection- getItemsToSave() {
Collection
- toSave = new LinkedList
- ();
toSave.add(_source);
return toSave;
}
@Override
public Collection
- getConnected() {
Collection
- conn = super.getConnected();
conn.add(_source);
return conn;
}
@Override
public void addAllConnected(Collection
- connected) {
super.addAllConnected(connected);
if (!connected.contains(_source)) {
connected.add(_source);
}
}
/*
* (non-Javadoc)
*
* @see org.expeditee.items.Item#merge(org.expeditee.items.Item, int, int)
*/
@Override
public Item merge(Item merger, int mouseX, int mouseY) {
return merger;
}
/**
* Returns the Text Item that was used to create this Picture object. This
* is required when saving the Frame.
*
* @return The Text Item used to create this Picture.
*/
public Text getSource() {
return _source;
}
@Override
public int getID() {
return _source.getID();
}
@Override
public void setID(int newID) {
_source.setID(newID);
}
@Override
public int getY() {
return _source.getY();
}
@Override
public int getX() {
return _source.getX();
}
@Override
public Colour getColor() {
return _source.getColor();
}
@Override
public void setColor(Colour c) {
_source.setColor(c);
invalidateCommonTrait(ItemAppearence.ForegroundColorChanged);
}
@Override
public void setBackgroundColor(Colour c) {
_source.setBackgroundColor(c);
}
@Override
public void setFillColor(Colour c) {
_source.setFillColor(c);
}
@Override
public void setBorderColor(Colour c) {
_source.setBorderColor(c);
invalidateCommonTrait(ItemAppearence.BorderColorChanged);
}
@Override
public void setGradientColor(Colour c) {
_source.setGradientColor(c);
}
@Override
public void setTooltips(List tooltips) {
_source.setTooltips(tooltips);
}
@Override
public void setTooltip(String tooltip) {
_source.setTooltip(tooltip);
}
@Override
public List getTooltip() {
return _source.getTooltip();
}
@Override
public float getThickness() {
return _source.getThickness();
}
@Override
public Integer getAnchorLeft() {
return _source.getAnchorLeft();
}
@Override
public Integer getAnchorRight() {
return _source.getAnchorRight();
}
@Override
public Integer getAnchorTop() {
return _source.getAnchorTop();
}
@Override
public Integer getAnchorBottom() {
return _source.getAnchorBottom();
}
@Override
public Colour getBorderColor() {
return _source.getBorderColor();
}
@Override
public void setThickness(float thick, boolean setConnected) {
this.invalidateCommonTrait(ItemAppearence.Thickness);
_source.setThickness(thick, setConnected);
this.invalidateCommonTrait(ItemAppearence.Thickness);
}
@Override
public Colour getBackgroundColor() {
return _source.getBackgroundColor();
}
@Override
public Colour getFillColor() {
return _source.getFillColor();
}
@Override
public Colour getGradientColor() {
return _source.getGradientColor();
}
@Override
public String getFillPattern() {
return _source.getFillPattern();
}
@Override
public boolean hasLink() {
return getLink() != null;
}
@Override
public String getLink() {
if (_source == null)
return null;
else
return _source.getLink();
}
@Override
public void setLink(String frameName) {
if (_source == null) {
return;
}
if(frameName == null)
invalidateAll();
_source.setLink(frameName);
invalidateBounds();
//TODO: only invalidate the link bit
invalidateAll();
}
@Override
public void setActions(List action) {
if (_source == null){
return;
}
if(action == null || action.size() == 0)
invalidateAll();
_source.setActions(action);
invalidateBounds();
invalidateAll();
}
@Override
public List getAction() {
if (_source == null)
return null;
else
return _source.getAction();
}
@Override
public void translate(Point origin, double ratio){
//_source.translate(origin, ratio);
invalidateBounds();
}
@Override
public void setPosition(float x, float y) {
//_source.setPosition(x, y);
}
@Override
public boolean isAnchored() {
return _source.isAnchored();
}
@Override
public boolean isAnchoredX() {
return _source.isAnchoredX();
}
@Override
public boolean isAnchoredY() {
return _source.isAnchoredY();
}
@Override
public void setAnchorTop(Integer anchor) {
_source.setAnchorTop(anchor);
if (anchor != null)
_source.setY(anchor);
}
@Override
public void setAnchorBottom(Integer anchor) {
_source.setAnchorBottom(anchor);
if (anchor != null)
_source.setY(DisplayController.getFramePaintAreaHeight() - getHeight() - anchor);
}
@Override
public void setAnchorLeft(Integer anchor) {
_source.setAnchorLeft(anchor);
}
@Override
public void setAnchorRight(Integer anchor) {
_source.setAnchorRight(anchor);
_source.setX(DisplayController.getFramePaintAreaWidth() - anchor - this.getWidth());
}
public boolean refresh(){
return true;
}
@Override
public void setXY(float x, float y){
_source.setXY(x, y);
}
@Override
public boolean hasPermission(UserAppliedPermission p) {
return _source.hasPermission(p);
}
@Override
public void setPermission(PermissionTriple permissionPair) {
_source.setPermission(permissionPair);
}
}