001package org.intellimate.izou.system.sound;
002
003import org.intellimate.izou.addon.AddOnModel;
004import org.intellimate.izou.identification.Identification;
005
006/**
007 * use this interface to communicate with Izou. Every Instance of Line you obtain via Mixer.getLine() implements this
008 * interface.
009 * @author LeanderK
010 * @version 1.0
011 */
012//TODO: TargetDataLine is not implemented yet
013public interface IzouSoundLine {
014    /**
015     * returns whether the line is permanently-available.
016     * If a line is not permanently available, it will close after max. 10 minutes
017     * @return true if permanent.
018     */
019    boolean isPermanent();
020
021    /**
022     * gets the associated AddonModel
023     * @return the AddonModel
024     */
025    @SuppressWarnings("unused")
026    AddOnModel getAddOnModel();
027
028    /**
029     * gets the ID responsible
030     * @return the the ID
031     */
032    @SuppressWarnings("unused")
033    Identification getResponsibleID();
034
035    /**
036     * returns whether the Line is muted
037     * @return true if muted.
038     */
039    @SuppressWarnings("unused")
040    boolean isMutedFromSystem();
041
042    /**
043     * sets whether other Addons audio-inputs should be muted while this line is open (only works for non-permanent lines).
044     * The standard is true.
045     * @param muteIfNonPermanent true if muted, false if not
046     */
047    @SuppressWarnings("unused")
048    void setMuteIfNonPermanent(boolean muteIfNonPermanent);
049
050    /**
051     * retruns whether other Addons audio-inputs should be muted while this line is open (only works for non-permanent lines).
052     * @return true if muted, false if not
053     */
054    @SuppressWarnings("unused")
055    boolean isMuteIfNonPermanent();
056}