2014-07-22 08:12:30 +02:00
package controlP5 ;
/ * *
* controlP5 is a processing gui library .
*
2016-04-14 12:39:16 +02:00
* 2006 - 2015 by Andreas Schlegel
2014-07-22 08:12:30 +02:00
*
* This library is free software ; you can redistribute it and / or
* modify it under the terms of the GNU Lesser General Public License
* as published by the Free Software Foundation ; either version 2 . 1
* of the License , or ( at your option ) any later version .
* This library is distributed in the hope that it will be useful ,
* but WITHOUT ANY WARRANTY ; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE . See the GNU
* Lesser General Public License for more details .
*
* You should have received a copy of the GNU Lesser General
* Public License along with this library ; if not , write to the
* Free Software Foundation , Inc . , 59 Temple Place , Suite 330 ,
* Boston , MA 02111 - 1307 USA
*
* @author Andreas Schlegel ( http : //www.sojamo.de)
* @modified # # date # #
* @version # # version # #
*
* /
import java.util.Arrays ;
import java.util.List ;
import processing.core.PApplet ;
import processing.core.PFont ;
import processing.core.PGraphics ;
/ * *
* @example controllers / ControlP5textlabel
* @nosuperclasses Controller Controller Textarea
* /
public class Textlabel extends Controller < Textlabel > {
protected int _myLetterSpacing = 0 ;
private boolean disabled ;
/ * *
*
* @param theControlP5 ControlP5
* @param theParent Tab
* @param theName String
* @param theValue String
* @param theX int
* @param theY int
* /
protected Textlabel ( final ControlP5 theControlP5 , final Tab theParent , final String theName , final String theValue , final int theX , final int theY ) {
super ( theControlP5 , theParent , theName , theX , theY , 200 , 20 ) ;
_myStringValue = theValue ;
setup ( ) ;
}
/ * *
*
* @param theValue String
* @param theX int
* @param theY int
* /
protected Textlabel ( final String theValue , final int theX , final int theY ) {
super ( " " , theX , theY ) ;
_myStringValue = theValue ;
setup ( ) ;
}
protected Textlabel ( final String theValue , final int theX , final int theY , final int theW , final int theH , final int theColor ) {
super ( " " , theX , theY ) ;
_myStringValue = theValue ;
_myValueLabel = new Label ( cp5 , _myStringValue , theW , theH , theColor ) ;
_myValueLabel . setFont ( cp5 . controlFont = = cp5 . defaultFont ? cp5 . defaultFontForText : cp5 . controlFont ) ;
_myValueLabel . setMultiline ( false ) ;
_myValueLabel . toUpperCase ( false ) ;
}
public Textlabel ( ControlP5 theControlP5 , final String theValue , final int theX , final int theY ) {
super ( " " , theX , theY ) ;
cp5 = theControlP5 ;
_myStringValue = theValue ;
_myValueLabel = new Label ( cp5 , _myStringValue , 10 , 10 , 0xffffffff ) ;
_myValueLabel . setFont ( cp5 . controlFont = = cp5 . defaultFont ? cp5 . defaultFontForText : cp5 . controlFont ) ;
_myValueLabel . set ( _myStringValue ) ;
_myValueLabel . setMultiline ( false ) ;
_myValueLabel . toUpperCase ( false ) ;
}
public Textlabel ( ControlP5 theControlP5 , final String theValue , final int theX , final int theY , final int theW , final int theH ) {
super ( " " , theX , theY ) ;
cp5 = theControlP5 ;
_myStringValue = theValue ;
_myValueLabel = new Label ( cp5 , _myStringValue , theW , theH , 0xffffffff ) ;
_myValueLabel . setFont ( cp5 . controlFont = = cp5 . defaultFont ? cp5 . defaultFontForText : cp5 . controlFont ) ;
_myValueLabel . setMultiline ( false ) ;
_myValueLabel . toUpperCase ( false ) ;
}
protected void setup ( ) {
_myValueLabel = new Label ( cp5 , _myStringValue ) ;
_myValueLabel . setFont ( cp5 . controlFont = = cp5 . defaultFont ? cp5 . defaultFontForText : cp5 . controlFont ) ;
_myValueLabel . setMultiline ( false ) ;
_myValueLabel . toUpperCase ( false ) ;
}
@Override public Textlabel setWidth ( int theValue ) {
_myValueLabel . setWidth ( theValue ) ;
return this ;
}
public Textlabel setHeight ( int theValue ) {
_myValueLabel . setHeight ( theValue ) ;
return this ;
}
public void draw ( final PApplet theApplet ) {
draw ( theApplet . g ) ;
}
@Override public void draw ( final PGraphics theGraphics ) {
if ( ! disabled ) {
theGraphics . pushMatrix ( ) ;
theGraphics . translate ( x ( position ) , y ( position ) ) ;
_myValueLabel . draw ( theGraphics , 0 , 0 , this ) ;
theGraphics . popMatrix ( ) ;
}
}
public void draw ( ) {
draw ( cp5 . pg ) ;
}
public void draw ( int theX , int theY ) {
cp5 . papplet . pushMatrix ( ) ;
cp5 . papplet . translate ( theX , theY ) ;
draw ( cp5 . pg ) ;
cp5 . papplet . popMatrix ( ) ;
}
public Textlabel setValue ( float theValue ) {
return this ;
}
public Textlabel setText ( final String theText ) {
return setValue ( theText ) ;
}
public Textlabel setLineHeight ( int theValue ) {
_myValueLabel . setLineHeight ( theValue ) ;
return this ;
}
public int getLineHeight ( ) {
return _myValueLabel . getLineHeight ( ) ;
}
public ControllerStyle getStyle ( ) {
return _myValueLabel . getStyle ( ) ;
}
public Textlabel append ( String theText , int max ) {
String str = _myStringValue + theText ;
if ( max = = - 1 ) {
return setText ( str ) ;
}
List < String > strs = Arrays . asList ( str . split ( " \ n " ) ) ;
return setText ( CP . join ( strs . subList ( Math . max ( 0 , strs . size ( ) - max ) , strs . size ( ) ) , " \ n " ) ) ;
}
@Override public Textlabel setStringValue ( String theValue ) {
return setValue ( theValue ) ;
}
public Textlabel setMultiline ( final boolean theFlag ) {
_myValueLabel . setMultiline ( true ) ;
return this ;
}
/ * *
* set the text of the textlabel .
*
* @param theText String
* /
public Textlabel setValue ( final String theText ) {
_myStringValue = theText ;
_myValueLabel . set ( theText ) ;
setWidth ( _myValueLabel . getWidth ( ) ) ;
setHeight ( _myValueLabel . getHeight ( ) ) ;
return this ;
}
public Textlabel setColor ( int theColor ) {
_myValueLabel . setColor ( theColor , true ) ;
return this ;
}
/ * *
* set the letter spacing of the font .
*
* @param theValue int
* @return Textlabel
* /
public Textlabel setLetterSpacing ( final int theValue ) {
_myLetterSpacing = theValue ;
_myValueLabel . setLetterSpacing ( _myLetterSpacing ) ;
return this ;
}
public Textlabel setFont ( ControlFont theControlFont ) {
getValueLabel ( ) . setFont ( theControlFont ) ;
return this ;
}
public Textlabel setFont ( PFont thePFont ) {
getValueLabel ( ) . setFont ( thePFont ) ;
return this ;
}
protected boolean inside ( ) {
return ( _myControlWindow . mouseX > x ( position ) + x ( _myParent . getAbsolutePosition ( ) ) & & _myControlWindow . mouseX < x ( position ) + x ( _myParent . getAbsolutePosition ( ) ) + _myValueLabel . getWidth ( )
& & _myControlWindow . mouseY > y ( position ) + y ( _myParent . getAbsolutePosition ( ) ) & & _myControlWindow . mouseY < y ( position ) + y ( _myParent . getAbsolutePosition ( ) ) + _myValueLabel . getHeight ( ) ) ;
}
public Label get ( ) {
return _myValueLabel ;
}
private void printConstructorError ( String theValue ) {
ControlP5
. logger ( )
. severe (
" The Textlabel constructor you are using has been deprecated, please use constructor \ nnew Textlabel(ControlP5,String,int,int) or \ nnew Textlabel(ControlP5,String,int,int,int,int) or \ nnew Textlabel(ControlP5,String,int,int,int,int,int,int) \ ninstead. The Textlabel with value ' "
+ theValue + " ' is disabled and will not be rendered. " ) ;
}
}