001: /*******************************************************************************
002: * Copyright (c) 2003, 2006 IBM Corporation and others.
003: * All rights reserved. This program and the accompanying materials
004: * are made available under the terms of the Eclipse Public License v1.0
005: * which accompanies this distribution, and is available at
006: * http://www.eclipse.org/legal/epl-v10.html
007: *
008: * Contributors:
009: * IBM Corporation - initial API and implementation
010: *******************************************************************************/package org.eclipse.ui.navigator;
011:
012: import org.eclipse.jface.util.IPropertyChangeListener;
013:
014: /**
015: *
016: * Allows clients to coordinate state across components that are part of the
017: * same logical extension.
018: *
019: * <p>
020: * That is, a content provider might vary how it exposes its content based on
021: * the state of a specific property in the model. Interested parties may add
022: * themselves as {@link IPropertyChangeListener}s to track changes in the state
023: * model.
024: * </p>
025: *
026: * <p>
027: * This interface is not intended to be implemented by clients.
028: * </p>
029: *
030: * @since 3.2
031: *
032: */
033: public interface IExtensionStateModel {
034:
035: /**
036: * The id is used to look up the state model across different components of
037: * the same logical extension. Generally, the id of the content extension is
038: * used.
039: *
040: * @return The unique identifier of this state model.
041: */
042: String getId();
043:
044: /**
045: *
046: * @return The viewer id that this state model is associated with.
047: */
048: String getViewerId();
049:
050: /**
051: *
052: * @param aPropertyName
053: * The name of a given property
054: * @return The current value of the property.
055: */
056: String getStringProperty(String aPropertyName);
057:
058: /**
059: *
060: * @param aPropertyName
061: * The name of a given property
062: * @return The current value of the property.
063: */
064: boolean getBooleanProperty(String aPropertyName);
065:
066: /**
067: *
068: * @param aPropertyName
069: * The name of a given property
070: * @return The current value of the property.
071: */
072: int getIntProperty(String aPropertyName);
073:
074: /**
075: *
076: * @param aPropertyName
077: * The name of a given property
078: * @return The current value of the property.
079: */
080: Object getProperty(String aPropertyName);
081:
082: /**
083: *
084: * @param aPropertyName
085: * The name of a given property
086: * @param aPropertyValue
087: * The new value of a the given property.
088: */
089: void setStringProperty(String aPropertyName, String aPropertyValue);
090:
091: /**
092: *
093: * @param aPropertyName
094: * The name of a given property
095: * @param aPropertyValue
096: * The new value of a the given property.
097: */
098: void setBooleanProperty(String aPropertyName, boolean aPropertyValue);
099:
100: /**
101: *
102: * @param aPropertyName
103: * The name of a given property
104: * @param aPropertyValue
105: * The new value of a the given property.
106: */
107: void setIntProperty(String aPropertyName, int aPropertyValue);
108:
109: /**
110: *
111: * @param aPropertyName
112: * The name of a given property
113: * @param aPropertyValue
114: * The new value of a the given property.
115: */
116: void setProperty(String aPropertyName, Object aPropertyValue);
117:
118: /**
119: *
120: * @param aListener
121: * An implementation of {@link IPropertyChangeListener} that
122: * should be notified when changes occur in this model.
123: */
124: void addPropertyChangeListener(IPropertyChangeListener aListener);
125:
126: /**
127: *
128: * @param aListener
129: * An implementation of {@link IPropertyChangeListener} that
130: * should no longer be notified when changes occur in this model.
131: */
132: void removePropertyChangeListener(IPropertyChangeListener aListener);
133: }
|