//------------------------------------------------------------------------------ // (c) Oisoft rekords 97 //------------------------------------------------------------------------------ // PMBox /* ------------------------------------------------------------------------------ Copyright (C) 1997 Oisoft rekords ------------------------------------------------------------------------------ Ce programme est une boite à rythmes virtuelle Il vous permet de composer des séquences rythmiques sur votre micro-ordinateur ------------------------------------------------------------------------------ Ce programme est un logiciel libre. Vous pouvez le redistribuer et/ou le modifier conformément aux dispositions de la Licence Publique Générale GNU, telle que publiée par la Free Software Foundation version 2 de la licence. Ce programme est distribué dans l'espoir qu'il sera utile, mais SANS AUCUNE GARANTIE ; sans même la garantie implicite de COMMERCIALISATION ou D'ADAPTATION A UN OBJET PARTICULIER. Pour plus de détail, voir la Licence Publique Générale GNU . Vous pouvez reçevoir un exemplaire de la Licence Publique Générale GNU en écrivant à la Free Software Foundation Inc., 675 Mass Ave, Cambridge, MA 02139, Etats-Unis. Vous pouvez consulter la version française de la license sur http://www.april.org ------------------------------------------------------------------------------ Vous pouvez joindre les auteurs de ce programme en écrivant par mail à oisoft@multimania.com et optenir des mise à jour sur http://www.multimania.com/~oisoft ------------------------------------------------------------------------------ */ //------------------------------------------------------------------------------ //package oisoft.gtools; //------------------------------------------------------------------------------ import java.awt.*; /** * Ce controle permet d'augmenter ou de baisser une valeur * entre des bornes * * Contient, un label, une valeur et des zones de click pour agir sur * cette valeur * * @author Oisoft Rekords * @version 1.0 */ //------------------------------------------------------------------------------ public class PMBox extends GTool { int x_plus ,y_plus ,w_plus ,h_plus ; int x_moins,y_moins,w_moins,h_moins; int x_val ,y_val ,w_val ,h_val; int x_label ,y_label; int ValMax,ValMin ; int Val; String ValStr ; int Step ; int mode_click ; int STEP_WIDTH = 10; Image PMBoxImage = null; Image LabelImage = null; /** * @param xPar Position X du Controle * @param yPar Position Y du Controle * @param wPar Largeur en pixels du controle * @param hPar Hauteur en pixels du controle * @param titlePar Titre affiché du controle * @param ValMinPar Borne minimum de la valeur affichée du controle * @param ValMaxPar Borne Maximum de la valeur affichée du controle * @param ValPar Le valeur de départ * @param PMBoxImagePar Images des fleches plus et moins * @param LabelImagePar Image de fond et du texte */ //----------------------------------------------------------------------------- public PMBox (int x,int y,int w,int h,String title,int ValMinPar,int ValMaxPar,int ValPar,Image PMBoxImagePar,Image LabelImagePar) { super(x,y,w,h,title); PMBoxImage = PMBoxImagePar; LabelImage = LabelImagePar ; ValMin = ValMinPar ; ValMax = ValMaxPar ; Val = ValPar ; Step = 1 ; x_plus = x; y_plus = y; w_plus = STEP_WIDTH; h_plus = h/2; x_moins = x; y_moins = y+h/2; w_moins = STEP_WIDTH; h_moins = h/2; x_val = x+STEP_WIDTH+4; y_val = y+1; w_val = 1*STEP_WIDTH+8; h_val = h-4; x_label = x+3*STEP_WIDTH; y_label = y+h; mode_click = 0; } //----------------------------------------------------------------------------- public void paint(Graphics g) { if (dirty == false) return; dirty=false; super.paint(g); //System.out.println("draw pmBox"); if (PMBoxImage!=null) g.drawImage(PMBoxImage, x , y , this); if (LabelImage!=null) g.drawImage(LabelImage, x +35 , y +2, this); // g.setFont(MyFont ); int cVal = Val; ValStr = ""+cVal; g.setColor(BackColor); g.fillRect(x_val ,y_val+2 , w_val , h_val); g.setColor(ForeColor); g.drawString(ValStr,x_val,y_val+FontSize); // g.drawString(Title,x_label,y_label); if (mode_click == 1) { g.setColor(ClickColor); g.fillRect(x_moins+4,y_moins+4, w_moins-4, h_moins-7); } if (mode_click == 2) { g.setColor(ClickColor); g.fillRect(x_plus +4,y_plus +4, w_plus -4, h_plus-7 ); } mode_click = 0; } //----------------------------------------------------------------------------- public void SetTitle(String TitlePar) { Title = TitlePar; } //----------------------------------------------------------------------------- protected void SetValue(int ValPar) { Val = ValPar; } //----------------------------------------------------------------------------- public int GetValue() { return Val; } //----------------------------------------------------------------------------- public void SetStep(int StepPar) { Step = StepPar; } //----------------------------------------------------------------------------- public boolean OnClick(int xMouse,int yMouse) { // System.out.println(x+" "+ y+" "+w+" "+h+" "+xMouse+" "+yMouse); boolean ret = super.OnClick(xMouse,yMouse); if (ret== true) { if ((yMouse-y) > (h/2)) { if (Val > ValMin) Val-=Step; mode_click = 1; } else { if (Val < ValMax) Val+=Step; mode_click = 2; } } return ret; } }