|
What this is
Other links
The source code
/*
* Sun Public License Notice
*
* The contents of this file are subject to the Sun Public License
* Version 1.0 (the "License"). You may not use this file except in
* compliance with the License. A copy of the License is available at
* http://www.sun.com/
*
* The Original Code is NetBeans. The Initial Developer of the Original
* Code is Sun Microsystems, Inc. Portions Copyright 1997-2003 Sun
* Microsystems, Inc. All Rights Reserved.
*/
package org.netbeans.modules.project.libraries.ui;
import java.util.List;
import java.util.Map;
import java.util.HashMap;
import java.beans.PropertyChangeSupport;
import java.beans.PropertyChangeListener;
import java.beans.PropertyChangeEvent;
import org.netbeans.spi.project.libraries.LibraryImplementation;
import org.openide.util.WeakListeners;
/**
*
* @author tom
*/
public class ProxyLibraryImplementation implements LibraryImplementation, PropertyChangeListener {
private final LibraryImplementation original;
private final LibrariesModel model;
private Map newContents;
private String newName;
private String newDescription;
private PropertyChangeSupport support;
/** Creates a new instance of ProxyLibraryImplementation */
public ProxyLibraryImplementation (LibraryImplementation original, LibrariesModel model) {
assert original != null && model != null;
this.original = original;
this.model = model;
this.original.addPropertyChangeListener((PropertyChangeListener)WeakListeners.create(PropertyChangeListener.class,this,this.original));
this.support = new PropertyChangeSupport (this);
}
public LibraryImplementation getOriginal () {
return this.original;
}
public void addPropertyChangeListener(PropertyChangeListener l) {
this.support.addPropertyChangeListener(l);
}
public void removePropertyChangeListener(PropertyChangeListener l) {
this.support.removePropertyChangeListener(l);
}
public String getType() {
return this.original.getType ();
}
public synchronized List getContent(String volumeType) throws IllegalArgumentException {
List result = null;
if (this.newContents == null || (result=(List)this.newContents.get(volumeType)) == null) {
return this.original.getContent (volumeType);
}
else {
return result;
}
}
public synchronized String getDescription() {
if (this.newDescription != null) {
return this.newDescription;
}
else {
return this.original.getDescription();
}
}
public synchronized String getName() {
if (this.newName != null) {
return this.newName;
}
else {
return this.original.getName ();
}
}
public synchronized void setContent(String volumeType, List path) throws IllegalArgumentException {
if (this.newContents == null) {
this.newContents = new HashMap ();
}
this.newContents.put (volumeType, path);
this.model.modifyLibrary(this);
this.support.firePropertyChange(PROP_CONTENT,null,null); //NOI18N
}
public synchronized void setDescription(String text) {
String oldDescription = this.newDescription == null ? this.original.getDescription() : this.newDescription;
this.newDescription = text;
this.model.modifyLibrary(this);
this.support.firePropertyChange(PROP_DESCRIPTION,oldDescription,this.newDescription); //NOI18N
}
public synchronized void setName(String name) {
String oldName = this.newName == null ? this.original.getName() : this.newName;
this.newName = name;
this.model.modifyLibrary(this);
this.support.firePropertyChange(PROP_NAME,oldName,this.newName); //NOI18N
}
public String getLocalizingBundle() {
return this.original.getLocalizingBundle();
}
public void setLocalizingBundle(String resourceName) {
throw new UnsupportedOperationException();
}
public void propertyChange(PropertyChangeEvent evt) {
this.support.firePropertyChange(evt.getPropertyName(),evt.getOldValue(),evt.getNewValue());
}
public final int hashCode() {
return this.original.hashCode();
}
public final boolean equals(Object obj) {
if (obj instanceof ProxyLibraryImplementation) {
return this.original.equals(((ProxyLibraryImplementation)obj).getOriginal());
}
else
return false;
}
public final String toString() {
return "Proxy for: " + this.original.toString(); //NOI18N
}
}
|
| ... this post is sponsored by my books ... | |
#1 New Release! |
FP Best Seller |
Copyright 1998-2024 Alvin Alexander, alvinalexander.com
All Rights Reserved.
A percentage of advertising revenue from
pages under the /java/jwarehouse
URI on this website is
paid back to open source projects.