001    /*
002     * To change this template, choose Tools | Templates
003     * and open the template in the editor.
004     */
005    
006    package org.bridj.cpp.com.shell;
007    import java.util.Collections;
008    import java.util.Iterator;
009    import org.bridj.ValuedEnum;
010    import org.bridj.FlagSet;
011    import org.bridj.IntValuedEnum;
012    import org.bridj.Pointer;
013    import org.bridj.StructObject;
014    import org.bridj.ann.Array;
015    import org.bridj.ann.Field;
016    import org.bridj.ann.Virtual;
017    import org.bridj.cpp.com.CLSID;
018    import org.bridj.cpp.com.IID;
019    
020    @IID("EA1AFB91-9E28-4B86-90E9-9E9F8A5EEFAF")
021    @CLSID("56FDF344-FD6D-11d0-958A-006097C9A090")
022    public class ITaskbarList3 extends ITaskbarList2 {
023            public enum THUMBBUTTONMASK implements IntValuedEnum<THUMBBUTTONMASK> {
024                    THB_BITMAP(0x00000001),
025                    THB_ICON(0x00000002),
026                    THB_TOOLTIP(0x00000004),
027                    THB_FLAGS(0x00000008);
028                    THUMBBUTTONMASK(int value) {
029                            this.value = value;
030                    }
031                    public final int value;
032            //@Override
033                    public long value() {
034                            return value;
035                    }
036                    public Iterator<THUMBBUTTONMASK> iterator() {
037                            return Collections.singleton(this).iterator();
038                    }
039                    public static ValuedEnum<THUMBBUTTONMASK> fromValue(long value) {
040                            return FlagSet.fromValue(value, values());
041                    }
042            }
043            /// http://msdn.microsoft.com/en-us/library/dd562321(VS.85).aspx
044            public enum THUMBBUTTONFLAGS implements IntValuedEnum<THUMBBUTTONFLAGS> {
045                    THBF_ENABLED(0x00000000),
046                    THBF_DISABLED(0x00000001),
047                    THBF_DISMISSONCLICK(0x00000002),
048                    THBF_NOBACKGROUND(0x00000004),
049                    THBF_HIDDEN(0x00000008),
050                    THBF_NONINTERACTIVE(0x00000010);
051                    THUMBBUTTONFLAGS(int value) {
052                            this.value = value;
053                    }
054                    final int value;
055            //@Override
056                    public long value() {
057                            return value;
058                    }
059                    public Iterator<THUMBBUTTONFLAGS> iterator() {
060                            return Collections.singleton(this).iterator();
061                    }
062                    public static ValuedEnum<THUMBBUTTONFLAGS> fromValue(long value) {
063                            return FlagSet.fromValue(value, values());
064                    }
065            }
066            public static class THUMBBUTTON extends StructObject {
067                    @Field(0)
068                    public native ValuedEnum<THUMBBUTTONMASK> dwMask();
069                    public native void dwMask(ValuedEnum<THUMBBUTTONMASK> dwMask);
070                    @Field(1)
071                    public native int iId();
072                    public native void iId(int iId);
073                    @Field(2)
074                    public native int iBitmap();
075                    public native void iBitmap(int iBitmap);
076                    @Field(3)
077                    public native Pointer<?> hIcon();
078                    public native void hIcon(Pointer<?> hIcon);
079                    @Field(4) @Array(260)
080                    public native Pointer<Character> szTip();
081                    public native void szTip(Pointer<Character> szTip);
082                    @Field(5)
083                    public native ValuedEnum<THUMBBUTTONFLAGS> dwFlags();
084                    public native void dwFlags(ValuedEnum<THUMBBUTTONFLAGS> dwFlags);
085            }
086            @Virtual(0) public native int SetProgressValue(Pointer<Integer> hWnd, long Completed, long Total);
087    
088        public enum TbpFlag implements IntValuedEnum<TbpFlag>  {
089            TBPF_NOPROGRESS(0),
090            TBPF_INDETERMINATE(1),
091            TBPF_NORMAL(2),
092            TBPF_ERROR(4),
093            TBPF_PAUSED(8);
094    
095                    TbpFlag(int value) {
096                            this.value = value;
097                    }
098                    public final int value;
099                    //@Override/
100                    public long value() {
101                            return value;
102                    }
103                    public Iterator<TbpFlag> iterator() {
104                            return Collections.singleton(this).iterator();
105                    }
106                    public static ValuedEnum<TbpFlag> fromValue(long value) {
107                            return FlagSet.fromValue(value, values());
108                    }
109        }
110    
111    
112            //@Virtual(1) public native int SetProgressState(Pointer<Integer> hWnd, ValuedEnum<TbpFlag> Flags);
113            @Virtual(1) public native int SetProgressState(Pointer<Integer> hWnd, ValuedEnum<TbpFlag> Flags);
114        
115            @Virtual(2) public native void RegisterTab(Pointer<Integer> hWndTab, Pointer<Integer> hWndMDI);
116            @Virtual(3) public native void UnregisterTab(Pointer<Integer> hWndTab);
117            @Virtual(4) public native void SetTabOrder(Pointer<Integer> hWndTab, Pointer<Integer> hwndInsertBefore);
118            @Virtual(5) public native void SetTabActive(Pointer<Integer> hWndTab, Pointer<Integer> hWndMDI, int dwReserved);
119            @Virtual(6) public native void ThumbBarAddButtons(Pointer<Integer> hWnd, int cButtons, Pointer<THUMBBUTTON> pButtons);
120            @Virtual(7) public native void ThumbBarUpdateButtons(Pointer<Integer> hWnd, int cButtons, Pointer<THUMBBUTTON> pButtons);
121            @Virtual(8) public native void ThumbBarSetImageList(Pointer<Integer> hWnd, Pointer<Integer> himl);
122            @Virtual(9) public native void SetOverlayIcon(Pointer<Integer> hWnd, Pointer<?> hIcon, Pointer<Character> pszDescription);
123            @Virtual(10) public native void SetThumbnailTooltip(Pointer<Integer> hWnd, Pointer<Character> pszTip);
124    
125        public class RECT {
126            
127        }
128            @Virtual(11) public native void SetThumbnailClip(Pointer<Integer> hWnd, Pointer<RECT> prcClip);
129    }