/*
* Copyright (c) 2012, Fromentin Xavier, Schnell Michaël, Dervin Cyrielle, Brabant Quentin
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* * The names of its contributors may not be used to endorse or promote products
* derived from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL Fromentin Xavier, Schnell Michaël, Dervin Cyrielle OR Brabant Quentin
* BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
package kameleon.gui.model;
import kameleon.gui.exception.UnknownKeyException;
import kameleon.gui.language.SwitchLanguage;
/**
* Subclass of {@code Message} used for plug-in information messages.
*
* @author Schnell Michaël
* @version 1.0
*/
public class PlugInMessage extends Message {
/**
* Text key referencing the displayed message of this instance.
*/
private String textKey ;
/**
* Arguments of the displayed information message.
*/
private Object[] args ;
/**
* State of this instance used to determine the displayed icon.
*/
protected State state ;
/**
* Builds an instance with the given message and state.
*
* @param addingPlugIn
* indicates whether a plug-in is being added or removed
* ({@code true} means added)
*
* @param textKey
* text key referencing the displayed message
*
* @param args
* arguments of the displayed information message
*/
public PlugInMessage(boolean addingPlugIn, String textKey, Object... args) {
super() ;
this.textKey = textKey ;
this.args = args ;
this.state = addingPlugIn ? State.ADDING_PLUGIN : State.REMOVING_PLUGIN ;
}// PlugInMessage(boolean)
/**
* Returns the message of this instance.
*
* @return Message of this instance
*
* @throws UnknownKeyException
* if an error occurred while building the text of this message
*/
public String getMessage() throws UnknownKeyException {
SwitchLanguage sl = SwitchLanguage.getInstance() ;
return sl.getText(this.textKey, this.args) ;
}// getMessage()
/**
* Returns the state of this instance.
*
* @return {@code State} of this instance
*/
public State getState() {
return this.state ;
}// getState()
/**
* Sets the message of this instance.
*
* @param textKey
* text key referencing the displayed message
*
* @param args
* arguments of the displayed information message
*/
public void setMessage(String textKey, Object... args) {
this.textKey = textKey ;
this.args = args ;
}// setMessage(String, Object...)
/**
* Sets the state of this instance.
*
* @param state
* new state of this instance
*/
public void setState(State state) {
this.state = state ;
}// setState(State)
/**
* Possible states for instances of {@code PlugInMessage}.
*
* @author Schnell Michaël
* @version 1.0
*/
public enum State {
/**
* Indicates that a plug-in is being added.
*/
ADDING_PLUGIN,
/**
* Indicates that a plug-in is being removed.
*/
REMOVING_PLUGIN,
/**
* Indicates that plug-in operation finished successfully.
*/
SUCCESS,
/**
* Indicates that a plug-in operation failed.
*/
ERROR ;
}// enum State
}// class PlugInMessage