|
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-2001 Sun
* Microsystems, Inc. All Rights Reserved.
*/
package org.netbeans.examples.modules.minicomposer;
import java.beans.PropertyEditor;
import java.beans.PropertyEditorSupport;
import java.io.IOException;
import java.lang.reflect.InvocationTargetException;
import java.util.ArrayList;
import java.util.List;
import org.openide.nodes.*;
import org.openide.util.NbBundle;
public class NoteProperty extends PropertySupport.ReadWrite {
private final ScoreCookie cookie;
private final Score.Note note;
private final int type;
public NoteProperty(ScoreCookie cookie, Score.Note note, int type) {
super("noteProperty" + type, Integer.TYPE,
NbBundle.getMessage(NoteProperty.class, "PROP_note_" + type),
NbBundle.getMessage(NoteProperty.class, "HINT_note_" + type));
this.cookie = cookie;
this.note = note;
this.type = type;
}
public Object getValue() {
switch (type) {
case 0:
return new Integer(note.getTone());
case 1:
return new Integer(note.getOctave());
case 2:
return new Integer(note.getDuration());
default:
throw new IllegalStateException();
}
}
public void setValue(Object val) throws IllegalArgumentException, InvocationTargetException {
int v = ((Integer)val).intValue();
try {
Score s = cookie.getScore();
int size = s.getSize();
List notes = new ArrayList(Math.max(size, 1));
for (int i = 0; i < size; i++) {
Score.Note n = s.getNote(i);
if (n == note) {
switch (type) {
case 0:
n = new Score.Note(v, n.getOctave(), n.getDuration());
break;
case 1:
n = new Score.Note(n.getTone(), v, n.getDuration());
break;
case 2:
n = new Score.Note(n.getTone(), n.getOctave(), v);
break;
default:
throw new IllegalStateException();
}
}
notes.add(n);
}
if (notes.size() != size) throw new IOException("did not find note");
cookie.setScore(new Score(notes));
} catch (IOException ioe) {
throw new InvocationTargetException(ioe);
}
}
public PropertyEditor getPropertyEditor() {
return new NotePropertyEditor(type);
}
private static final class NotePropertyEditor extends PropertyEditorSupport {
private final int type;
public NotePropertyEditor(int type) {
this.type = type;
}
public String[] getTags() {
switch (type) {
case 0:
return Score.TONES_LONG;
case 1:
return Score.OCTAVES_LONG;
case 2:
return Score.DURATIONS_LONG;
default:
throw new IllegalStateException();
}
}
public String getAsText() {
int v = ((Integer)NotePropertyEditor.this.getValue()).intValue();
return getTags()[v];
}
public void setAsText(String text) throws IllegalArgumentException {
String[] tags = getTags();
for (int i = 0; i < tags.length; i++) {
if (tags[i].equals(text)) {
NotePropertyEditor.this.setValue(new Integer(i));
return;
}
}
throw new IllegalArgumentException();
}
}
}
|
| ... 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.