WideStudio Logo
WideStudio
Programming Guide
WideStudio Index
Table of contents


The sample of the event procedures for WSCvlabel



Making the WSCvlabel instance click-able

In the sample of the event procedures, It is a most basic procedure that makes the label instance to react to the mouse pointer. Here, you will create a procedure to make it counting up clicking of the mouse pointer.

// Set this to a label instance with WSEV_MOUSE_PRESS
//                                  (MOUSE-PRESS trigger)
public class chop {
  protected static void chop(WSCbase object){
    //(0) Which the mouse button is pressed?
    //btn1 -> fire. btn2 or the other -> return.
    if ((Mwt.WSGIappMouse().getMouseStatus() & Mwt.WS_MOUSE_BTN1) == 0){
      return;
    }

    // (A)Get the value of the property: userValue
    WSCvariant value = object.getProperty("userValue");
    // (B)Count it up.
    long val = value.getLong() + 1;
    // (C)Display the value.
    object.setProperty("labelString",val);
    // (D) Store the counted value into the property:
    //     userValue for the next time.
    object.setProperty("userValue",val);
  }
}

At first, this event procedure uses the property: "labelString" to display the number which is counted up. So, The kind of class like WSCvbtn,WSCvlabel which has it, can be used with WSEV_MOUSE_PRESS trigger. It will be executed by clicking of the mouse pointer. If by WSEV_MOUSE_IN trigger is used, it count the number of entering and exiting of the mouse pointer.



Making the WSCvlabel instance select-able

Here, you will create a procedure to make the label instance select-able by clicking of the mouse pointer. To display the instance is selected, the procedure changes the back-color of it. This time, the procedure uses the method: set/getUserData() to get/store data instead of the property: "userValue".

//Set this to a label instance with WSEV_MOUSE_PRESS
//                               (MOUSE-PRESS trigger)
public class chop {
  protected static void chop(WSCbase object){
    //(A) getVariantData() Get the value with
    WSCvariant value =  object.getVariantData("STATUS");
    //(B) it makes the instance selected  if value is 0,
    //                              and unselected if 1.
    if (value.getLong() == 0){
      //(C)Store the backcolor(which is string type) into userString
      WSCvariant color = object.getProperty("backColor");
      object.setProperty("userString",color);
      //(D)Set the backcolor to the selected color.
      object.setProperty("backColor","slategray4");
      //(E)Store the state with setValiantData().
      object.setVariantData("STATUS",1);
    }else{
      //(F)Get the original backcolor from userString.
      WSCvariant color =  object.getProperty("userString");
      //(G)Store it to backColor to display with the original color.
      object.setProperty("backColor",color);
      //(H)Store the state with setValiantData().
      object.setVariantData("STATUS",0);
    }
  }
}

The kind of class like WSCvbtn,WSCvlabel which has the property: "backColor", can be used with WSEV_MOUSE_PRESS trigger. It will be executed by clicking of the mouse pointer.





Making the WSCvlabel instance highlight-able

Here, you will create a procedure with WSEV_MOUSE_IN/OUT to make the instance highlighted. Coming into the area,the instance is highlighted,and Going out of the area, it is returned normal.

An important matter is that you create a procedure which prepares a sub-procedure with WSEV_MOUSE_IN and another with WSEV_MOUSE_OUT. In other words,that procedure with WSEV_INITIALIZE is executed, it adds two sub-procedures to the instance which trigger is WSEV_MOUSE_IN and WSEV_MOUSE_OUT to make the instance highlight-able. One procedure can prepares many procedures. Then you can go with a procedure even if many procedures are needed.

// in subop1.java
//a sub-procedure with WSEV_MOUSE_IN trigger
public class subop1 {
  protected static void subop1(WSCbase object){
    //(A)Store the original back-color to userString
    WSCvariant color = object.getProperty("backColor");
    object.setProperty("userString",color);
    //(B)highlight the instance.
    object.setProperty("backColor","slategray4");
  }
}

// in subop2.java
//a sub-procedure with WSEV_MOUSE_OUT trigger
public class subop2 {
  protected static void subop2(WSCbase object){
    //(C)Get the original back-color from userString
    WSCvariant color = object.getProperty("userString");
    //(D)Store the original back color.
    object.setProperty("backColor",color);
  }
}

// in chop.java
//a main-procedure with WSEV_INITIALIZE trigger
public class chop {
  protected static void chop(WSCbase object){
    //If executed,it add the sub-procedures to the instance.
    //(E) Setup a sub-procedure:WSEV_MOUSE_IN.
    //ProcedureName="Highlight1" Trigger=WSEV_MOUSE_IN Function=subop1
    object.addProcedure("ハイライトOP1","subop1.subop1",Mwt.WSEV_MOUSE_IN);
    //(F) Setup a sub-procedure:WSEV_MOUSE_OUT.
    //ProcedureName="Highlight2" Trigger=WSEV_MOUSE_OUT Function=subop2
    object.addProcedure("ハイライトOP2","subop2.subop2",Mwt.WSEV_MOUSE_OUT);
  }
}

The subop1() is executed by WSEV_MOUSE_IN fired, and makes the instance back-color highlight(A)(B). The subop2() is executed by WSEV_MOUSE_OUT fired, and makes the instance back-color original one(C)(D). The main procedure is executed by WSEV_INITIALIZE only once to setup the sub-procedures (E)(F).

Making a group of selectable WSCvlabel instances

Here, you create a event procedure to make a group of the mouse-selectable label instances on the same parent. the procedure make the instance selected by storing WS_SHADOW_IN to the property:"shadowType" and memorize which instance is selected by storing it to its parent instance.

// An event procedure with WSEV_MOUSE_PRESS trigger
public class chop {
  protected static void chop(WSCbase object){
    //(A)Use the value of userValue as "instance identifier"
    WSCvariant val = object.getProperty("userValue");
    //(B)Make the instance selected: WS_SHADOW_IN state.
    object.setProperty("shadowType",Mwt.WS_SHADOW_IN);
    //(C)Get the last selected instance which is memorized
    //   with setUserData() of the parent instance.
    WSCbase parent = object.getParent();
    WSCvariant target_val = parent.getVariantData("SelectedItem");
    WSCbase target = target_val.getInstancePtr();
    //(D)Make it not selected: WS_SHADOW_OUT state.
    if (Mwt.WSGIappObjectList().existInstance(target) != Mwt.False){
      target.setProperty("shadowType",Mwt.WS_SHADOW_OUT);
    }
    if (Mwt.WSGIappObjectList().existInstance(target) != Mwt.False &&
        target.getInstanceName() == object.getInstanceName()){
      //(E)When clicking the selected instance twice,
      //   clear the selected state.
      parent.setVariantData("GroupValue",0);
      parent.setVariantData("SelectedItem",0);
    }else{
      //(F)The other,store the selected instance to the parent instance.
      parent.setVariantData("GroupValue",val);     // Instance identifier
      // selected instance
      WSCvariant val_self = new WSCvariant(object);
      parent.setVariantData("SelectedItem",val_self);
    }
  }
}

The label instances needs each instance identifier to recognize which instance is selected, then we decide to use the property: "userValue" as the instance identifier which has unique value.




Document Release 3.80 for WideStudio ver 3.80, Jan 2005


WideStudio documents index | Table of contents

Copyright(C) WideStudio Development Team, 1999-2005 Last modified: Jan 05, 2005