I would just create a Module called something like DialogFactory...

PUBLIC ErrorDialog AS Integer = 0
PUBLIC WarningDialog AS Integer = 1
PUBLIC InformationDialog AS Integer = 2
PRIVATE DefaultDialogType AS Integer = ErrorDialog
PRIVATE AllowedTypes AS Integer[] = [ErrorDialog, WarningDialog,
InformationDialog]

PUBLIC FUNCTION getDialog(dialogType AS Integer) AS VikramDialog
  
  DIM vDialog AS NEW VikramDialog
  DIM type AS Integer
  FOR EACH type IN AllowedTypes
    IF type = dialogType
      vDialog.dialogType = dialogType
      RETURN vDialog
    END IF
  NEXT
  PRINT "ERROR!  Unknown dialog type: " & dialogType
  vDialog.dialogType = DefaultDialogType
  RETURN vDialog
END


Using this code simply becomes:

  DIM aDialog AS VikramDialog
  aDialog = DialogFactory.getDialog(DialogFactory.InformationDialog)
  PRINT aDialog.dialogType
  aDialog = DialogFactory.getDialog(DialogFactory.WarningDialog)
  PRINT aDialog.dialogType
  aDialog = DialogFactory.getDialog(5)
  PRINT aDialog.dialogType


Of course, you can add other stuff to the getDialog function, like the
dialog name, title etc. etc...

What do you think?

Regards,
Caveat

On Mon, 2011-03-07 at 23:09 -0800, vikram wrote:
> Hi,
> 
> I am working on an application in which I reuse the same dialog for 
> performing different tasks. I have a PUBLIC INTEGER variable(named 
> dialogType) in the dialog's .class file. When creating instances of this 
> dialog I set the DialogInstance.dialogType to the value(0,1,2,...) which 
> indicates the purpose of the dialog. The value of DialogInstance.dialogType 
> is used within the dialog to decide what to do with the user input.
> 
> I am using numeric values to indicate the dialog type. This isn't very 
> elegant. I am looking for the Gambas equivalent of doing a #define CHARCONST 
> value in C.
> 
> I have tried using a Collection.
> 
> DIM DialogType AS NEW Collection
> DialogType["SomeType0"] = 0
> DialogType["SomeType1"] = 1
> DialogType["SomeType2"] = 2
> DialogType["SomeType3"] = 3
> DialogType["SomeType4"] = 4
> 
> I am thinking of placing the collection's definition in a Module and then 
> using it to replace the numeric constants:
> DIM DialogInstance as DialogName
> DialogInstance = NEW DialogName
> DialogInstance.dialogType = ModuleName.DialogType["SomeType0"]
> 'current code
> 'DialogInstance.dialogType = 0
> 
> Is there a better way of using character constants in Gambas?
> 
> Gambas 2.21/Debian 6
> 
> Thanks,
> Vikram Nair
> 
> 
> 
>       
> ------------------------------------------------------------------------------
> What You Don't Know About Data Connectivity CAN Hurt You
> This paper provides an overview of data connectivity, details
> its effect on application quality, and explores various alternative
> solutions. http://p.sf.net/sfu/progress-d2d
> _______________________________________________
> Gambas-user mailing list
> Gambas-user@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/gambas-user



------------------------------------------------------------------------------
What You Don't Know About Data Connectivity CAN Hurt You
This paper provides an overview of data connectivity, details
its effect on application quality, and explores various alternative
solutions. http://p.sf.net/sfu/progress-d2d
_______________________________________________
Gambas-user mailing list
Gambas-user@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/gambas-user

Reply via email to