79 }
80
81 LPCTSTR AwtScrollPane::GetClassName() {
82 return TEXT("SunAwtScrollPane");
83 }
84
85 /* Create a new AwtScrollPane object and window. */
86 AwtScrollPane* AwtScrollPane::Create(jobject self, jobject parent)
87 {
88 JNIEnv *env = (JNIEnv *)JNU_GetEnv(jvm, JNI_VERSION_1_2);
89 jobject target = NULL;
90 AwtScrollPane* c = NULL;
91
92 try {
93 if (env->EnsureLocalCapacity(1) < 0) {
94 return NULL;
95 }
96
97 PDATA pData;
98 AwtComponent* awtParent;
99 JNI_CHECK_PEER_GOTO(parent, done);
100
101 awtParent = (AwtComponent*)pData;
102 JNI_CHECK_NULL_GOTO(awtParent, "null awtParent", done);
103
104 target = env->GetObjectField(self, AwtObject::targetID);
105 JNI_CHECK_NULL_GOTO(target, "null target", done);
106
107 c = new AwtScrollPane();
108
109 {
110 DWORD style = WS_CHILD | WS_CLIPCHILDREN | WS_CLIPSIBLINGS;
111 jint scrollbarDisplayPolicy =
112 env->GetIntField(target, scrollbarDisplayPolicyID);
113
114 if (scrollbarDisplayPolicy
115 == java_awt_ScrollPane_SCROLLBARS_ALWAYS) {
116 style |= WS_HSCROLL | WS_VSCROLL;
117 }
118 DWORD exStyle = WS_EX_CLIENTEDGE;
119
120 if (GetRTL()) {
121 exStyle |= WS_EX_RIGHT | WS_EX_LEFTSCROLLBAR;
122 if (GetRTLReadingOrder())
662 AwtScrollPane::postScrollEventID =
663 env->GetMethodID(cls, "postScrollEvent", "(IIIZ)V");
664 DASSERT(AwtScrollPane::postScrollEventID != NULL);
665
666 CATCH_BAD_ALLOC;
667 }
668
669 /*
670 * Class: sun_awt_windows_WScrollPanePeer
671 * Method: create
672 * Signature: (Lsun/awt/windows/WComponentPeer;)V
673 */
674 JNIEXPORT void JNICALL
675 Java_sun_awt_windows_WScrollPanePeer_create(JNIEnv *env, jobject self,
676 jobject parent)
677 {
678 TRY;
679
680 DTRACE_PRINTLN2("%x: WScrollPanePeer.create(%x)", self, parent);
681
682 PDATA pData;
683 JNI_CHECK_PEER_RETURN(parent);
684 AwtToolkit::CreateComponent(self, parent,
685 (AwtToolkit::ComponentFactory)
686 AwtScrollPane::Create);
687 JNI_CHECK_PEER_CREATION_RETURN(self);
688 ((AwtScrollPane*)pData)->VerifyState();
689
690 CATCH_BAD_ALLOC;
691 }
692
693 /*
694 * Class: sun_awt_windows_WScrollPanePeer
695 * Method: getOffset
696 * Signature: (I)I
697 */
698 JNIEXPORT jint JNICALL
699 Java_sun_awt_windows_WScrollPanePeer_getOffset(JNIEnv *env, jobject self,
700 jint orient)
701 {
702 TRY;
703
704 GetOffsetStruct *gos = new GetOffsetStruct;
705 gos->scrollpane = env->NewGlobalRef(self);
706 gos->orient = orient;
|
79 }
80
81 LPCTSTR AwtScrollPane::GetClassName() {
82 return TEXT("SunAwtScrollPane");
83 }
84
85 /* Create a new AwtScrollPane object and window. */
86 AwtScrollPane* AwtScrollPane::Create(jobject self, jobject parent)
87 {
88 JNIEnv *env = (JNIEnv *)JNU_GetEnv(jvm, JNI_VERSION_1_2);
89 jobject target = NULL;
90 AwtScrollPane* c = NULL;
91
92 try {
93 if (env->EnsureLocalCapacity(1) < 0) {
94 return NULL;
95 }
96
97 PDATA pData;
98 AwtComponent* awtParent;
99
100 JNI_CHECK_PEER_GOTO(parent, done);
101 awtParent = (AwtComponent*)pData;
102
103 target = env->GetObjectField(self, AwtObject::targetID);
104 JNI_CHECK_NULL_GOTO(target, "null target", done);
105
106 c = new AwtScrollPane();
107
108 {
109 DWORD style = WS_CHILD | WS_CLIPCHILDREN | WS_CLIPSIBLINGS;
110 jint scrollbarDisplayPolicy =
111 env->GetIntField(target, scrollbarDisplayPolicyID);
112
113 if (scrollbarDisplayPolicy
114 == java_awt_ScrollPane_SCROLLBARS_ALWAYS) {
115 style |= WS_HSCROLL | WS_VSCROLL;
116 }
117 DWORD exStyle = WS_EX_CLIENTEDGE;
118
119 if (GetRTL()) {
120 exStyle |= WS_EX_RIGHT | WS_EX_LEFTSCROLLBAR;
121 if (GetRTLReadingOrder())
661 AwtScrollPane::postScrollEventID =
662 env->GetMethodID(cls, "postScrollEvent", "(IIIZ)V");
663 DASSERT(AwtScrollPane::postScrollEventID != NULL);
664
665 CATCH_BAD_ALLOC;
666 }
667
668 /*
669 * Class: sun_awt_windows_WScrollPanePeer
670 * Method: create
671 * Signature: (Lsun/awt/windows/WComponentPeer;)V
672 */
673 JNIEXPORT void JNICALL
674 Java_sun_awt_windows_WScrollPanePeer_create(JNIEnv *env, jobject self,
675 jobject parent)
676 {
677 TRY;
678
679 DTRACE_PRINTLN2("%x: WScrollPanePeer.create(%x)", self, parent);
680
681 AwtToolkit::CreateComponent(self, parent,
682 (AwtToolkit::ComponentFactory)
683 AwtScrollPane::Create);
684 PDATA pData;
685 JNI_CHECK_PEER_CREATION_RETURN(self);
686 ((AwtScrollPane*)pData)->VerifyState();
687
688 CATCH_BAD_ALLOC;
689 }
690
691 /*
692 * Class: sun_awt_windows_WScrollPanePeer
693 * Method: getOffset
694 * Signature: (I)I
695 */
696 JNIEXPORT jint JNICALL
697 Java_sun_awt_windows_WScrollPanePeer_getOffset(JNIEnv *env, jobject self,
698 jint orient)
699 {
700 TRY;
701
702 GetOffsetStruct *gos = new GetOffsetStruct;
703 gos->scrollpane = env->NewGlobalRef(self);
704 gos->orient = orient;
|