Interface ChordLeadSheetItem<T>

Type Parameters:
T -
All Superinterfaces:
Comparable<ChordLeadSheetItem<?>>, Transferable
All Known Subinterfaces:
CLI_BarAnnotation, CLI_ChordSymbol, CLI_LoopRestartBar, CLI_Section, WritableItem<T>
All Known Implementing Classes:
ChordLeadSheetItem.DefaultComparableItem, CLI_ChordSymbol.ComparableCsItem

public interface ChordLeadSheetItem<T> extends Transferable, Comparable<ChordLeadSheetItem<?>>
Items which belong to a ChordLeadSheet.

This is a mutable class. Subclasses must define equals() and hashCode() to be compatible with compareTo(). If you want to use ChordLeadSheetItems as Map keys you should use an IdentityHashMap, unless you are sure ChordLeadSheetItems won't mutate. Same for a Set, you should use Guava Sets.newIdentityHashSet().

  • Field Details

  • Method Details

    • getContainer

      ChordLeadSheet getContainer()
      Get the ChordLeadSheet this object belongs to.
      Returns:
      Can be null.
    • getData

      T getData()
      Get the data part of this item.
      Returns:
    • getPosition

      Position getPosition()
      Get a copy of the position of this item.
      Returns:
    • getPositionOrder

      int getPositionOrder()
      A unique constant value used to order items which have the same position.

      Returns:
      Must be a unique value for each type of item
      See Also:
      • invalid reference
        #compareTo(org.jjazz.chordleadsheet.api.item.ChordLeadSheetItem)
    • getCopy

      ChordLeadSheetItem<T> getCopy(T newData, Position newPos)
      Get a copy of this item using the specified parameters.

      Client properties are also copied. Returned copy has its ChordLeadSheet container set to null.

      Parameters:
      newData - If null, the copy will have the same data than this object.
      newPos - If null, the copy will have the same position than this object.
      Returns:
    • isBarSingleItem

      boolean isBarSingleItem()
      Return true if there can be only one single item perbar, like a time signature.

      Returns:
    • getClientProperties

      StringProperties getClientProperties()
      Get the client properties.
      Returns:
    • compareToSamePosition

      int compareToSamePosition(ChordLeadSheetItem<?> other)
      Compare this ChordLeadSheetItem with another ChordLeadSheetItem having the same position and same positionOrder.

      This method should be used by ChordLeadSheetItem.compareTo() when the 2 items meet the following criteria:
      - this.equals(other)==false
      - same position
      - same positionOrder

      Parameters:
      other -
      Returns:
      See Also:
      • invalid reference
        #compareTo(org.jjazz.chordleadsheet.api.item.ChordLeadSheetItem)
    • addPropertyChangeListener

      void addPropertyChangeListener(PropertyChangeListener listener)
    • removePropertyChangeListener

      void removePropertyChangeListener(PropertyChangeListener listener)
    • compareToThreadUnsafe

      default int compareToThreadUnsafe(ChordLeadSheetItem<?> other)
      A compareTo() thread-unsafe implementation which is consistent with equalsThreadUnsafe(org.jjazz.chordleadsheet.api.item.ChordLeadSheetItem, java.lang.Object).

      Container and clientProperties are ignored. Relies on

      invalid @link
      {@link #compareToSamePosition(org.jjazz.chordleadsheet.api.item.ChordLeadSheetItem).
      .

      If thread-safety is required, subclass compareTo() implementation should call this method under a read lock.

      Parameters:
      other -
      Returns:
    • equalsThreadUnsafe

      static boolean equalsThreadUnsafe(ChordLeadSheetItem<?> item, Object o)
      A thread-unsafe equals() helper implementation consistent with compareToThreadUnsafe(org.jjazz.chordleadsheet.api.item.ChordLeadSheetItem).

      Container and clientProperties are ignored.

      If thread-safety is required, subclass equals() implementation should call this method under a read lock.

      Parameters:
      item - Cannot be null
      o -
      Returns:
    • hashCodeThreadUnsafe

      static int hashCodeThreadUnsafe(ChordLeadSheetItem<?> item)
      A thread-unsafe hashCode() helper implementation consistent with equalsThreadUnsafe(org.jjazz.chordleadsheet.api.item.ChordLeadSheetItem, java.lang.Object).

      Container and clientProperties are ignored.

      If thread-safety is required, subclass equals() implementation should call this method under a read lock.

      Parameters:
      item -
      Returns:
    • createItemTo

      static ChordLeadSheetItem.DefaultComparableItem createItemTo(Position pos, boolean inclusive)
      Create an item right after the specified position for comparison purposes.

      For the Comparable interface, any item whose position is before (or equal if inclusive is true) to pos will be considered BEFORE the returned item.

      Parameters:
      pos -
      inclusive -
      Returns:
    • createItemTo

      static ChordLeadSheetItem.DefaultComparableItem createItemTo(int bar)
      Create an item at the end of the specified bar for comparison purposes.

      For the Comparable interface, any normal item in the bar will be considered BEFORE the returned item.

      Parameters:
      bar -
      Returns:
    • createItemFrom

      static ChordLeadSheetItem.DefaultComparableItem createItemFrom(Position pos, boolean inclusive)
      Create an item right before the specified position for comparison purposes.

      For the Comparable interface, any item whose position is after (or equal if inclusive is true) to pos will be considered AFTER the returned item.

      Parameters:
      pos -
      inclusive -
      Returns:
    • createItemFrom

      static ChordLeadSheetItem.DefaultComparableItem createItemFrom(int bar)
      Create an item at the beginning of the specified bar for comparison purposes.

      For the Comparable interface, any normal item in the bar will be considered AFTER the returned item.

      Parameters:
      bar -
      Returns:
    • getVoidEvent

      static PropertyChangeEvent getVoidEvent(ChordLeadSheetItem<?> item)
      Return a PropertyChangeEvent which will not be fired.
      Parameters:
      item -
      Returns: