> The MVC pattern in Pivot is well implemented and it is getting me thinking
> about options for a musical score. My view of a score is that it is comprised
> of its data, a model object graph and a graphic representation of the data in
> the graph. There may be a way to align these aspects with the MVC pattern
> that Pivot uses?
This is exactly what I was talking about in my previous message. :-)
> Presently, the model object graph has just enough objects arranged in a tree
> to allow any type of score to be formed. The objects carry a lot of data that
> is put there by editing tools and musical analysers. Possibly the graph could
> be an extended Component? There are many ways to represent pure music data so
> having alternate skins (and styles) might be a way to do that as well?
Data models in Pivot are often implemented as collections, Java Beans, or a
combination thereof. The Sequence interface is used to represent an ordered
collection of values, and Dictionary is used to represent an indexed
collection. Classes that implement these interfaces generally fire events to
notify listeners about changes. Some classes fire events directly (such as
ArrayList) while others fire them indirectly via an outer class instance (such
as TabPane.TabSequence). Which approach to use is entirely up to you.
Again, I'm not an expert, but I imagine that a "score" could loosely be modeled
as a collection of "notes". So, you might be able to do something like:
public interface Note {
...
}
public class Score implements Sequence<Note> {
...
public ListenerList<ScoreListener> getScoreListeners() {
// return scoreListenerList;
}
}
public interface ScoreListener {
// Define score events such as noteInserted(), notesRemoved(), etc.
}
If your model isn't too complex, you might actually be able to use an ArrayList
rather than creating your own Sequence. ArrayList implements the List
interface, which already defines a set of sequence-oriented events (in
ListListener).
Anyways, hopefully this is enough to get you started. There are lots of
examples of Sequence implementations throughout the code, too (as well as
Dictionary).
> I have resolved my requirements already but there may be a benefit to
> refactoring to the MVC pattern Pivot uses?
There is - if you use Pivot's collection interfaces (specifically Sequence and
Dictionary or a class/interface that extends them), you can use BXML to
declarative construct instances of your model.
G