This is the mail archive of the kawa@sourceware.org mailing list for the Kawa project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: proper use of define-alias


Hello Chuah:

According to Kawa's documentation, (despite it  may not be very clear
here to newbie programmers) define-alias is for aliasing Java Classes
or Java Packages (aka "locations") NOT numerical constants.

If you evaluate in the Kawa REPL the mentioned constants you'll get
their numerical values. Example:

#|kawa:1|# javax.swing.ScrollPaneConstants:VERTICAL_SCROLLBAR_ALWAYS
22

(By the way, the angle-bracket syntax is now considered deprecated as
far as I know) 

So the right way to accomplish what you are trying to do is either use:

(define vert-sb-always
        javax.swing.ScrollPaneConstants:VERTICAL_SCROLLBAR_ALWAYS)

Or 

(define-alias ScrollPaneConstants javax.swing.ScrollPaneConstants)

and then use

ScrollPaneConstants:VERTICAL_SCROLLBAR_ALWAYS

whenever you need the mentioned constant.

Greetings.

Alcides Flores Pineda.

> El Fri, 22 Jun 2012 16:57:04 +0800
> Chuah Teong Leong <teongleong@gmail.com> escribió:
> A shorter version of my question is as follows
> 
> (define-alias vert-sb-always
> <javax.swing.ScrollPaneConstants>:VERTICAL_SCROLLBAR_ALWAYS)
> 
> (define-alias hori-sb-always
> <javax.swing.ScrollPaneConstants>:HORIZONTAL_SCROLLBAR_ALWAYS)
> 
> ;; this doesnt work
> (let ((myvar vert-sb-always)
>        (myvar2 hori-sb-always))
> 
> (make-scrollpane-with-policy in-component
>  ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? myvar myvar2))
> 
> why cant i assign a temp variable like that and use it like that?
> 
> 
> in the previous example using vpolicy and hpolicy throws an exception
> 
> ;; choose the correct constant based on the symbol passed in
>  (define vpolicy
>    (case vp-sym
>      ((always) vert-sb-always)
>      ((needed) vert-sb-needed)
>      ((never) vert-sb-never)
>      (else (display "Error unknown policy ")(display vp-sym)
>            vert-sb-needed)))
> 
>   (define hpolicy
>    (case hp-sym
>      ((always) hori-sb-always)
>      ((needed) hori-sb-needed)
>      ((never) hori-sb-never)
>      (else (display "Error unknown policy ")(display hp-sym)
>            hori-sb-needed)))
> 
>   (<javax.swing.JScrollPane> in-component vpolicy hpolicy)
> 
> whereas...
> 
> this works
>  (<javax.swing.JScrollPane>
>    in-component
>    (case vp-sym
>      ((always) vert-sb-always)
>      ((needed) vert-sb-needed)
>      ((never) vert-sb-never)
>      (else (display "Error unknown policy ")(display vp-sym)
>            vert-sb-needed))
>      (case hp-sym
>      ((always) hori-sb-always)
>      ((needed) hori-sb-needed)
>      ((never) hori-sb-never)
>      (else (display "Error unknown policy ")(display hp-sym)
>            hori-sb-needed)))
> 
> so essentially my problem is with why there's a problem with assigning
> a temp variable to the define-alias variables
> 
> 
> On Thu, Jun 21, 2012 at 11:11 PM, Chuah Teong Leong
> <teongleong@gmail.com> wrote:
> > hi. I'm new to the use of define-alias and I was trying to use it
> > as follows.
> >
> > Exception:
> > Value '20' for variable 'vpolicy' has wrong type
> > (java.lang.Integer) (java.lang. Integer cannot be cast to
> > gnu.mapping.Location)
> >
> > (define-alias vert-sb-always
> > <javax.swing.ScrollPaneConstants>:VERTICAL_SCROLLBAR_ALWAYS)
> > (define-alias vert-sb-needed
> > <javax.swing.ScrollPaneConstants>:VERTICAL_SCROLLBAR_AS_NEEDED)
> > (define-alias vert-sb-never
> > <javax.swing.ScrollPaneConstants>:VERTICAL_SCROLLBAR_NEVER)
> >
> > (define-alias hori-sb-always
> > <javax.swing.ScrollPaneConstants>:HORIZONTAL_SCROLLBAR_ALWAYS)
> > (define-alias hori-sb-needed
> > <javax.swing.ScrollPaneConstants>:HORIZONTAL_SCROLLBAR_AS_NEEDED)
> > (define-alias hori-sb-never
> > <javax.swing.ScrollPaneConstants>:HORIZONTAL_SCROLLBAR_NEVER)
> >
> > (define (make-scrollpane in-component :: <javax.swing.JComponent>)
> > ?(<javax.swing.JScrollPane> in-component))
> >
> > ;; make a scrollpane with policy
> > (define (make-scrollpane-with-policy in-component ::
> > <javax.swing.JComponent> vp-sym :: <symbol>
> > ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? hp-sym :: <symbol> )
> >
> > ;; choose the correct constant based on the symbol passed in
> > ?(define vpolicy
> > ? ?(case vp-sym
> > ? ? ?((always) vert-sb-always)
> > ? ? ?((needed) vert-sb-needed)
> > ? ? ?((never) vert-sb-never)
> > ? ? ?(else (display "Error unknown policy ")(display vp-sym)
> > ? ? ? ? ? ?vert-sb-needed)))
> >
> > ? (define hpolicy
> > ? ?(case hp-sym
> > ? ? ?((always) hori-sb-always)
> > ? ? ?((needed) hori-sb-needed)
> > ? ? ?((never) hori-sb-never)
> > ? ? ?(else (display "Error unknown policy ")(display hp-sym)
> > ? ? ? ? ? ?hori-sb-needed)))
> >
> > ? (<javax.swing.JScrollPane> in-component vpolicy hpolicy)
> > ?)
> >
> > What is the proper way of doing what I want to do here?


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]