গুগল ওয়েব টুলকিট (Google Web Toolkit বা GWT)-এ ইভেন্ট-ড্রিভেন প্রোগ্রামিং একটি গুরুত্বপূর্ণ দিক। এটি ডেভেলপারদের ইন্টারেক্টিভ এবং প্রতিক্রিয়াশীল অ্যাপ্লিকেশন তৈরি করতে সাহায্য করে। GWT-তে ইভেন্ট মডেলটি DOM ইভেন্টের উপর ভিত্তি করে কাজ করে এবং এর মাধ্যমে কাস্টম ইভেন্ট এবং ইভেন্ট প্রোপাগেশন (Event Propagation) কার্যকরভাবে ব্যবস্থাপনা করা যায়।
Custom Events (কাস্টম ইভেন্ট)
Custom Events তৈরি
GWT-তে কাস্টম ইভেন্ট তৈরি করতে GwtEvent ক্লাস ব্যবহার করতে হয়।
ধাপসমূহ
ইভেন্ট ক্লাস তৈরি করুন:
GwtEventথেকে একটি ক্লাস তৈরি করে এর ধরন (type) এবং প্রয়োজনীয় ডেটা সংজ্ঞায়িত করতে হয়।public class MyCustomEvent extends GwtEvent<MyCustomEvent.Handler> { public interface Handler extends EventHandler { void onCustomEvent(MyCustomEvent event); } public static final Type<Handler> TYPE = new Type<>(); private final String message; public MyCustomEvent(String message) { this.message = message; } public String getMessage() { return message; } @Override public Type<Handler> getAssociatedType() { return TYPE; } @Override protected void dispatch(Handler handler) { handler.onCustomEvent(this); } }ইভেন্ট হ্যান্ডলার নিবন্ধন করুন:
HasHandlersইন্টারফেস ব্যবহার করে ইভেন্ট রেজিস্টার করা হয়।public class MyCustomWidget extends Composite implements HasHandlers { public void triggerCustomEvent(String message) { fireEvent(new MyCustomEvent(message)); } }ইভেন্ট শোনার জন্য লিসেনার যোগ করুন:
MyCustomWidget widget = new MyCustomWidget(); widget.addHandler(event -> Window.alert("Received: " + event.getMessage()), MyCustomEvent.TYPE);
Event Propagation (ইভেন্ট প্রোপাগেশন)
ইভেন্ট প্রোপাগেশন প্রক্রিয়া
GWT-তে ইভেন্ট প্রোপাগেশন তিনটি ধাপে সম্পন্ন হয়:
- Capturing Phase: ইভেন্ট DOM-এর উপর থেকে নিচের দিকে যায়।
- Target Phase: ইভেন্ট নির্দিষ্ট DOM উপাদানে পৌঁছে।
- Bubbling Phase: ইভেন্ট DOM-এর নিচ থেকে উপরে ফিরে যায়।
ইভেন্ট প্রোপাগেশন বন্ধ করা
GWT-তে ইভেন্ট প্রোপাগেশন বন্ধ করতে Event.stopPropagation() ব্যবহার করা হয়।
Button button = new Button("Click Me");
button.addClickHandler(event -> {
event.stopPropagation(); // ইভেন্ট প্রোপাগেশন বন্ধ
Window.alert("Button clicked!");
});
RootPanel.get().add(button);
Custom Event এবং Propagation উদাহরণ
public class CustomEventExample {
public static void main(String[] args) {
Button parentButton = new Button("Parent Button");
Button childButton = new Button("Child Button");
// Parent Button এ ClickHandler যোগ করা
parentButton.addClickHandler(event -> Window.alert("Parent Button clicked!"));
// Child Button এ ClickHandler যোগ করা
childButton.addClickHandler(event -> {
event.stopPropagation(); // ইভেন্ট প্রোপাগেশন বন্ধ
Window.alert("Child Button clicked!");
});
RootPanel.get().add(parentButton);
RootPanel.get().add(childButton);
}
}
Custom Events বনাম Standard Events
| বৈশিষ্ট্য | Custom Events | Standard Events |
|---|---|---|
| ব্যবহার | ব্যবহারকারীর চাহিদা অনুযায়ী তৈরি | DOM দ্বারা সরবরাহিত |
| নিয়ন্ত্রণ | সম্পূর্ণ নিয়ন্ত্রণ প্রদান করে | প্রি-ডিফাইন্ড নিয়ম মেনে চলে |
| জটিলতা | উন্নত লজিক প্রয়োগে কার্যকর | সহজ এবং ডিফল্ট ব্যবহারের জন্য |
GWT-তে Custom Events এবং Event Propagation ব্যবহারের মাধ্যমে ইন্টারেক্টিভ অ্যাপ্লিকেশন তৈরি সহজ এবং কার্যকর হয়ে ওঠে। Custom Events আপনাকে নির্দিষ্ট লজিক অনুযায়ী ইভেন্ট পরিচালনার স্বাধীনতা দেয়, আর Event Propagation ইভেন্টের কার্যক্রম নিয়ন্ত্রণ করতে সাহায্য করে।
Read more