1 /* 2 * This file is a part of CAST project. 3 * (c) Copyright 2007, AGH University of Science & Technology 4 * https://caribou.iisg.agh.edu.pl/trac/cast 5 * 6 * Licensed under the Eclipse Public License, Version 1.0 (the "License"). 7 * You may not use this file except in compliance with the License. 8 * You may obtain a copy of the License at 9 * http://www.eclipse.org/legal/epl-v10.html 10 */ 11 /* 12 * File: AttributeValueContainer.java 13 * Created: 2007-00-00 14 * Author: awos 15 * $Id: AttributeValueContainer.java 2770 2009-04-21 19:17:34Z kpietak $ 16 */ 17 18 package pl.edu.agh.cast.model.visual.backward; 19 20 import java.util.List; 21 22 import pl.edu.agh.cast.model.attributes.AttributeManager; 23 import pl.edu.agh.cast.model.attributes.AttributeMergePolicy; 24 import pl.edu.agh.cast.model.attributes.AttributeValue; 25 26 /** 27 * An interface to be implemented by elements containing attributes. 28 * 29 * @author AGH CAST Team 30 */ 31 public interface AttributeValueContainer { 32 33 /** 34 * Returns the value of the attribute named <code>name</code>. 35 * 36 * @param name 37 * name of the attribute 38 * @return an {@link AttributeValue} instance for the given attribute 39 */ 40 public AttributeValue getAttributeValue(String name); 41 42 /** 43 * Sets a new attribute value, fires change event. 44 * 45 * @param name 46 * name of the attribute to change 47 * @param newValue 48 * new value of the attribute 49 * @throws UnsupportedOperationException 50 * if attribute is not editable 51 */ 52 public void setAttributeValue(String name, Object newValue); 53 54 /** 55 * Sets a new attribute value according to given {@link AttributeMergePolicy}, fires change event. 56 * 57 * If <code>policy</code> is <code>null</code> then acts the same as {@link #setAttributeValue(String, Object)}. 58 * 59 * @param name 60 * name of the attribute to change 61 * @param newValue 62 * new value of the attribute 63 * @param policy 64 * merge policy 65 * @throws UnsupportedOperationException 66 * if attribute is not editable 67 */ 68 public void setAttributeValue(String name, Object newValue, AttributeMergePolicy policy); 69 70 /** 71 * Checks if given attribute is editable. 72 * 73 * @param name 74 * name of the attribute 75 * @return editable flag 76 */ 77 public boolean isAttributeEditable(String name); 78 79 /** 80 * Returns complete list of attribute values in this container. 81 * 82 * Takes into consideration that registered properties may have changed in the manager, i.e. some values may be 83 * obsolete. 84 * 85 * @return list of all contained {@link AttributeValue}s 86 */ 87 public List<AttributeValue> getAllValues(); 88 89 /** 90 * Removes attribute value from this container. 91 * 92 * @param name 93 * name of attribute to remove 94 * @return removed {@link AttributeValue}, or null if this attribute's value was not set (see 95 * {@link java.util.Collection#remove(Object)}) 96 */ 97 public AttributeValue removePropertyValue(String name); 98 99 /** 100 * Returns attribute manager for this container. 101 * 102 * @return attribute manager for this container 103 */ 104 public AttributeManager getAttributeManager(); 105 106 }