إنشاء برامج إحترافية بواسطة Java-RCP الجزء2
أنشئ بواسطة محمد بشير النعيمي في 18 نوفمبر 2007 | وسم كـ:
مدخل الفهرس
في الجزء السابق من هذه السلسلة تحدّثت عن سبب إستعمال أي مبرمج محترف لتقنية RCP، إضافة لبعض التعاريف العامة المتعلّقة بهذا المجال. لذلك في هذا الجزء سأقوم بالتعمّق أكثر فأكثر في تقنية RCP و ذلك عن طريق القيام بتنفيذ مشروع عملي يتم من خلاله شرح مكونات تطبيق RCP بشكل مفصّل.
أساسيات RCP الفهرس
تعتمد تطبيقات RCP على بنية البرامج الإضافية لـeclipse و المسماة PDE (بيئة تطوير البرامج الإضافية plug-ins development environment) لذلك إذا أردنا إنشاء مشروع RCP يجب علينا ضمنياً إنشاء مشروع لبرنامج إضافي و ذلك من أجل توفير إمكانية تشغيل هذا التطبيق بشكل برنامج مستقل عن eclipse أو كبرنامج ملحق لـeclipse.
الهدف من هذا الفصل الفهرس
-
إنشاء تطبيق RCP بأبسط أشكاله
-
شرح تفصيلي للمكونات الرئيسية لتطبيق RCP
متطلبات العمل الفهرس
أولاً- منصة تطوير eclipse مع مجموعة من البرامج الإضافية : مشروعeclipse متشعّب كثيراً لذلك إذا أردنا تحميل eclipse من الموقع الرسمي سنضطّر لفتح العديد من الصفحات و هذا أمر مزعج كثيراً للمبتدئين و المحترفين على حدّ سواء و سبب هذه المشكلة نابع عن كثرة البرامج الإضافية التي يمكن إستعمالها مع منصة التطوير، لذلك تم إنشاء عدد من المواقع المختصّة بتوفير توزيعات من eclipse وفق إحتياجات المستخدم مما جعل إستعمال الموقع الرسمي لتحميل eclipse مقتصراً على مطوري eclipse نفسه أكثر من مستخدمي eclipse من المبرمجين العاديين. و أشهر مواقع توزيعات eclipse هو:
حيث يضم هذا الموقع عدد لا بأس به من التوزيعات وفق إحتياجات المبرمج المختلفة (الهدف من التطوير، لغة البرمجة المستخدمة … الخ)، و بما أننا نهدف في مقالتنا هذه إلى تطوير تطبيقات جافا بواسطة RCP لذلك نحن بحاجة لتوزيعة
و في حال أردت الحصول على آخر إصدارات eclipse من خلال الموقع الرسمي بإمكانك إستعمال الرابط التالي:
http://www.eclipse.org/downloads
ملاحظة: لمعرفة المزيد عن مواقع توزيعات eclipse بإمكانك زيارة الرابط التالي:
http://www.eclipse.org/callisto/downloads.php
ثانياً- آلة جافا الإفتراضية JVM: يمكن الحصول على آخر إصدار من خلال الرابط التالي:
http://java.sun.com/javase/downloads/index.jsp
إنشاء المشروع الفهرس
للبدء بإنشاء المشروع سنتبع الخطوات التالية:
بعد تحميل eclipse حسب ما ذُكر سابقاً (في متطلبات العمل) قم بتشغيل eclipse من مسار التنصيب، عندها ستظهر لك رسالة تُسأل فيها عن مسار فضاء العمل (الشكل-1)
(الشكل-1)
قم بتحديد مسار فضاء العمل ثم فعّل مربع الإختيار “Use this as the default and do not ask again” من أجل عدم السؤال مرة أخرى عن مسار فضاء العمل. بعدها ستظهر لك النافذة الترحيبية للمنصة (الشكل-2)، قم بإغلاقها أو تصفّحها للإطلاع على آخر التحديثات في eclipse أو لقراءة الوثائق المساعدة.
(الشكل-2)
إختر الأمر التالي من شريط القوائم (الشكل-3) File→ new→ Project→ Plug-in Development→ Plug-in Project
(الشكل-3)
إختر Next، لتظهر لنا نافذة معالج إنشاء البرامج الإضافية في eclipse. أدخل إسم المشروع و ليكن com.hali-sy.browser (الشكل-4) و السبب في إختيار هذه التسمية يتعلّق بإعدادات التحديث عن طريق الإنترنت حيث توفر لنا مجموعة البرامج الإضافية المستخدمة في RCP إمكانية تحديث أي تطبيق RCP عن طريق الإنترنت بطريقة آمنة و سهلة.
(الشكل-4)
إختر Next، ثم قم بإلغاء تحديد مربع الإختيار “Generate an activator” (الشكل-5) لأننا لسنا بحاجة ميزة مراقبة البرنامج الإضافي كوننا نريد إنشاء برنامج RCP. إختر Yes ضمن مجموعة “Rich client application” من أجل إنشاء تطبيق RCP .
(الشكل-5)
إختر Next، ثم حدّد القالب RCP (الشكل-6)، من أجل إنشاء تطبيق RCP بسيط وفق القالب الإفتراضي.
(الشكل-6)
إختر Next، لتظهر لك نافذة معاينة المشروع و التي تضم الإعدادات الرئيسية للمشروع (الشكل-7)، ثم إختر Finish لإنهاء المعالج.
(الشكل-7)
الآن أصبح المشروع جاهز للإستعمال، و بما أنك على الأغلب تقوم بتشغيل eclipse لأول مرّة، ستظهر لك رسالة (الشكل-8) تسألك عن المنظور الذي سيتم إستعماله مع هذا النوع من المشاريع، لذلك أنصحك بالموافقة عن طريق إختيار Yes (مع تفعيل مربع الإختيار “Remember my decision” كي لا تظهر لك الرسالة مرة أخرى)
(الشكل-8)
و لإختبار التطبيق الذي تم إنشاؤه بواسطة المعالج، إختر الأمر “Launch an eclipse application” (الشكل-9)
(الشكل-9)
من أجل بناء المشروع ثم تشغيل التطبيق، و الذي سيظر نافذة فارغة (الشكل-10)
(الشكل-10)
في العمق الفهرس
حتى الآن كل ما تعلمناه يقتصر على برنامج RCP بأبسط أشكاله و من البديهي أننا سنحتاج لتخصيص هذا البرنامج وفق إحتياجاتنا الخاصة لذلك قبل إجراء عملية التخصيص ينبغي علينا فهم هندسة مشاريع RCP، لذلك سيقتصر هذا الفصل على شرح هندسة RCP و سيأتي شرح كيفية التخصيص في الفصل التالي.
إن عملية فهم هندسة الشيفرة لـRCP سهلة للغاية و ذلك بسبب التركيب البنيوي الذكي، حيث يراعي هذا التركيب مبادئ البرمجة الكائنية المنحى OOP، إضافة لإعتماد تنسيقات XML التي تغنينا عن كتابة العديد من الأسطر البرمجية المتقدمة
مفاهيم عامة الفهرس
-
نافذة لوحة العمل Workbench Window: و هي الحاوية الرئيسية لكل أقسام تطبيق RCP ، لذلك يحتوي كل تطبيق RCP على لوحة عمل واحدة فقط، لكن بإمكاننا عمل نسخ من لوحات العمل عن طريق الامر Window → New Window لكن جميع النسخ تستعمل من أجل العرض فقط و لن تؤثر على سير البرنامج.
-
شريط القوائم Menus Bar: يحتوي على القوائم الرئيسية لتطبيق RCP حيث يتم التحكم عن طريق هذا الشريط بكل أقسام تطبيق RCP، لذلك يحتوي كل تطبيق RCP على شريط قوائم واحد فقط.
-
لوحة العرض View: و تستعمل لعرض المكونات المرئية المعتادة في البرمجة لذلك بإمكاننا إدراج كل ما نريده من مكونات ضمن لوحة العرض الواحدة عدا مكون شريط القوائم لأنه يتبع لنافذة لوحة العمل، لكن بإمكاننا إدراج قوائم فرعية ضمن لوحات العرض حيث تتحكم هذه القوائم بمحتويات لوحات العرض فقط و لا تؤثر على الأقسام الأخرى ضمن تطبيق RCP. و بإمكان كل تطبيق RCP أن يحتوي على عدد لا نهائي من لوحات العرض، إضافة لإمكانية عمل نسخ من أي لوحة عرض بغية العرض فقط.
-
لوحة المحرر Editor: و تستعمل كأداة إدخال ضمن لوحة العمل و تستعمل لتحرير النصوص أو الصور حيث تحتوي على بعض الأوامر الافتراضية المتواجدة في معظم محررات النصوص و الصور كالأمر “حفظ” و “حفظ بإسم” … الخ. و لوحات المحرر حالها حال لوحات العرض كل تطبيق RCP أن يحتوي على عدد لا نهائي من لوحات المحرر، إضافة لإمكانية عمل نسخ من أي لوحة محرر بغية العرض فقط.
-
المنظور Perspective: يستعمل المنظور كحاوية للوحات العرض و المحرر و هو المسؤول عن خصائص عرض هذه اللوحات من حيث حجم اللوحة و توضعها … الخ، لذلك بإمكان كل تطبيق RCP أن يحتوي على عدد لا نهائي من المناظير و بما أن وظيفة المناظير تنظيمية لذلك لا حاجة لنا هنا بإنشاء أي نسخ عن أي منظور (كما هو الحال مع لوح العمل و لوحات العرض و المحرر).
-
شريط الإختصارات Shortcut Bar: يستعمل لعرض إختصارات المناظير.
-
التوسيعة و نقطة التوسيعة extension and extension point: جميع البرامج الاضافية في eclipse تتصل فيما بينها من أجل تحقيق أفضل توافقية أثناء عملية التطوير و التحديث، و بما أن أي برنامج RCP يعتبر كبرنامج إضافي في eclipse لذلك جميع الخصائص التي تطبق على البرامج الاضافية تطبق على تطبيقات RCP. و من أجل فهم مبدأ التوسيعة و نقطة التوسيعة سأضرب لكم المثال التالي: لنشبّه التوسيعة بالمصباح و نقطة التوسيعة بالمنفذ الذي يركب عليه المصباح، عندها ستكون جميع البرامج الاضافية في eclipse (أو أي برامج منتجة بواسطته) تتصل فيما بينها بواسطة المصابيح، حيث يتم تركيب كل مصباح على المنفذ المخصًص له. اذاً كل برنامج إضافي يجب أن يحتوي على الأقل على توسيعة (و التي تضم محتويات البرنامج) و نقطة توسعية (إذا أردنا ذلك) من أجل وصل هذا البرنامج بالبرامج الاضافية الأخرى و الشكل التالي يوضح مبدأ التوسيعة و نقطة التوسيع
و تحتوي كل نقطة توسيعة على تصريح خاص يوصّف شكل التوسيعة التي ستستقبلها و ذلك من أجل السماح بتوسيع أو تخصيص قسم معين من البرنامج الاضافي، أما برمجيا فتحتوي نقطة التوسيعة على تركيب مؤلف من صيغة XML و واجهات جافا (Java Interfaces)
إدارة المشروع الفهرس
أي مشروع تطبيق RCP يتم إدارته من قبل ملفين رئيسيين هما MANIFEST.MF, plugin.xml مهمتهم حفظ خصائص المشروع (المصادر التي يحتويها المشروع، البرامج الإضافية التي يحتاجها المشروع … الخ
يوفّر eclipse محرر مرئي (الشكل 9) لإدارة و هو Plug-in manifest editor. حيث يمكننا الوصول لهذا المحرّر المرئي عن طريق إختيار أحد الملفين (MANIFEST.MF, plugin.xml) ثم النقر بالزر الأيمن للفأرة ثم إختيار الأمر Open With → Plug-in manifest editor
(الشكل-11)
نافذة المحرر المرئي تُظهر لنا عدّة أقسام هي:
-
Overview (الشكل-9):
(الشكل-9)
يحتوي هذا القسم على مجموعات توصّف المعلومات العامة لتطبيق RCP و هذه المجموعات هي:
Genenral Information: تحوي بالتسلسل على: الرقّم المعرّف للتطبيق، الإصدار، إسم التطبيق، مزوّد الإنترنت
Execution Environments: لتخصيص أقدم إصدار لآلة جافا الإفتراضية يمكن تشغيل التطبيق من خلال
Testing: لإختبار تشغيل التطبيق بطريقتين: القياسية (جرّبناها سابقاً) و تتبع الأخطاء (Debug mode)
Exporting: لتصدير التطبيق كبرنامج إضافي يعمل ضمن eclipse (سأشرح هذه الطريقة لاحقاً
-
Dependencies (الشكل-12):
(الشكل-12)
يختص هذا القسم بتخصيص مجموعة البرامج الإضافية التي يحتاجها التطبيق.
-
Runtime (الشكل-13):
(الشكل-13)
يختص هذا القسم بتخصيص طريقة عرض التطبيق في مرحلة وقت التشغيل (Runtime Stage).
-
Extensions (الشكل-14):
(الشكل-14)
يضم هذا القسم قائمة بمجموعة نقاط التوسيعات التي يتم إستعمالها ضمن التطبي، لذلك هنالك إمكانية إنشاء توسيعات خاصة بنا بدءً من نقاط التوسيعات الإفتراضية التي يوّفرها eclipse و يجب الإنتباه إلى أنه تم إستعمال نقطتي توسيعة في تطبيقنا، … الأولى من أجل إستعمال نواة تطبيقات eclipse و الثاني من أجل إستعمال منظور تطبيقات eclipse.
-
Extensions Points (الشكل-15):
(الشكل-15)
هذا القسم مخصّص لإنشاء نقاط توسيعات لبرنامجنا من أجل إتاحة إستعماله من قبل برامج eclipse الأخرى، لكن بما أنني أقوم بشرح تطبيق RCP بأبسط أشكاله لذلك لن أقوم -في الوقت الراهن- بإنشاء أية نقاط توسيعات.
-
Build (الشكل-16):
(الشكل-16)
قسم خاص بتحديد سلوك بناء التطبيق و هو يحوي على قسمين رئيسيين: Binary Build خاص بتحديد العناصر التي سيتم بناءها بشكل ثنائي. Source Build خاص بتحديد عناصر الشيفرة البرمجية التي سيتم بناءها (في حال أردنا بناء التطبيق مع شيفرته البرمجية و سأقوم بشرح هذا القسم بالتفصيل لاحقاً)
-
MANIFEST.MF (الشكل-17):
(الشكل-17)
يحتوي هذا القسم على المحتويات النصية للملف MANIFEST.MF و الذي مهمته توصيف تطبيق RCP و علاقته بالوسط الخارجي لذلك لا حاجة لنا بتحرير الملف MANIFEST.MF يدوياً لأن جميع محتوياته متوفرة للتحرير المرئي من خلال الأقسام الأخرى، مع ذلك بإمكاننا تحريره يدوياً كما هو موضح في (الشكل-17)
-
plugin.xml (الشكل-18):
(الشكل-18)
يحتوي هذا القسم على المحتويات النصية للملف plugin.xml و الذي مهمته :
* توصيف كيفية توسيع المنصة eclipse (لأن أي تطبيق RCP يشتق من البرامج الإضافية الخاصة بمنصة eclipse لذلك يعتبر أي تطبيق RCP -ضمنياً- كأنه برنامج إضافي لـeclipse)
* تحديد و تعريف التوسيعات و نقاط التوسيعة التي سيتم إستعمالها ضمن التطبيق
* المعلومات المطلوبة التي تلزم في عرض واجهة المستخدم كالأيقونات و القوائم .. الخ.
* معلومات و إصدار منصة التطوير المستعملة
* معلومات و إصدار التطبيق
لا حاجة لنا بتحرير الملف plugin.xml يدوياً لأن جميع محتوياته متوفرة للتحرير المرئي من خلال الأقسام الأخرى، مع ذلك بإمكاننا تحريره يدوياً كما هو موضح في (الشكل-18)
-
build properties (الشكل-19):
(الشكل-19)
يحتوي هذا القسم على المحتويات النصية للملف build.properties الذي يستعمل فقط أثناء عملية بناء تطبيق RCP لتصديره بالشكل الذي نريده حيث يحتوي هذا الملف على مجموعة التعليمات الخاصة بطريقة بناء التطبيق (مسار التصدير، مسار الشيفرة البرمجية، المصادر التي يجب تضمينها … الخ). و يوفّر eclipse محرراً مرئياً لهذا الملف، لذلك لا حاجة لنا بتحرير الملف build.properties يدوياً لأن جميع محتوياته متوفرة للتحرير المرئي من خلال القسم build (تم شرحه سابقا)، مع ذلك بإمكاننا تحريره يدوياً كما هو موضح في (الشكل-19)
صف نقطة بدء و إنتهاء البرنامج الفهرس
كما هو معروف للجميع أن نقطة بدء و إنتهاء أي برنامج جافا هي إستدعاء الطريقة main() الموجودة في الصف الرئيسي للبرنامج.
بنفس الطريقة أي برنامج من نوع RCP توجد له نقطة بدء و إنتهاء هي الطريقة run() و التي هي موجودة في الصف الرئيسي لبرنامج RCP لكن الفرق بين برنامج جافا العادي و تطبيق RCP هو أن الصف الرئيسي لتطبيق RCP حصراً يكون الصف Application، و هنا لا أود الدخول في تفصيل سبب الحصر فيكفي معرفة أن الصف الرئيسي لأي تطبيق RCP هو الصف Application و سأقوم بتعليل سبب الحصر في فقرات متقدّمة.
الصف Application موجود ضمن الملف Application.java كما هو موضح في (الشكل -11) و (الشكل- 20)
(الشكل-11)
(الشكل-20)
تقوم الطريقة run() بإنشاء متغيّر العرض عن طريق الإستدعاء
|
PlatformUI().createAndRunWorkbench(display, new ApplicationWorkbenchAdvisor); |
هذا الإستدعاء يقوم بفتح نافذة التطبيق و ينشأ حلقة لا نهائية تسمى حلقة الأحداث مهمتها تلقي الأحداث الخاصة بالتطبيق (مثال: حدث النقر على الفأرة، النقر على زر من لوحة المقاتيح … ألخ)، تنتهي هذه الحلقة عند إغلاق آخر نافذة في التطبيق و تعيد القيمة النهائية لنتيجة إغلاق آخر نافذة
صف لوحة العمل الفهرس
مما سبق الشيفرة الخاصة بالصف Application تقوم بإنشاء نسخة عن الصف ApplicationWorkbenchAdvisor و ذلك من خلال تمريرها كوسيط ضمن الطريقة createAndRunWorkbench، هذا القسم من الشيفرة هو الأهم على الإطلاق في كل التطبيق لأن الصف ApplicationWorkbenchAdvisor مهمته الرئيسية هي إخبار لوحة العمل كيف تتصرف ما الذي سترسمه و كيف .. إلخ.
الشيفرة الخاصة بهذا الصف متواجدة في الملف ApplicationWorkbenchAdvisor.java كما هو موضح في (الشكل-11) و (الشكل-21)
(الشكل-11)
(الشكل-21)
نستطيع تلخيص عمل هذا الصف بوظيفتين:
* تهيئة المنظور الذي سيتم عرضه.
* تحديد نافذة لوحة العمل التي سيتم إستعمالها.
و بما أن هذا الصف هو المسؤول عن كيفية تصرف لوحة العمل، لذلك يحتوي على مجموعة من الطرق التي تسمى نقاط تعريف دورة حياة لوحة العمل defined points in the Workbench’s lifecycle و التي بهيمنتنا عليها overriding نستطيع تنفيذ كل ما نرغب به.
و الجدول التالي يحتوي على أهم هذه الطرق مع توضيح وظيفة كل طريقة على حدة:
|
الطريقة |
الوصف |
|---|---|
|
initialize |
أول طريقة يتم إستدعاؤها و التي تستعمل عادة في تهيئة التطبيق قبل بدء الإظهار (مثال: التصريح عن ملفات الصور أو الأيقونات المستعملة في التطبيق) |
|
preStartup |
يتم إستدعاء هذه الطريقة قبل القيام بفتح أول نافذة عمل و عادة ما تستعمل لتهيئة كيفية عرض نافذة لوحة العمل (مثال: التحكم بطريقة عرض لوحة العرض أو لوحة المحرر في نافذة لوحة العمل) |
|
postStartup |
يتم إستدعاؤها بعد فتح أو إستعادة جميع النوافذ، لكن قبل بدء حلقة الأحداث، لذلك تستعمل عادة من أجل فتح التلميحات أو النوافذ الأخرى |
|
preShutdown |
يتم إستدعاؤها بعد الإنتهاء من إغلاق حلقة الأحداث لكن قبل إغلاق أي نافذة |
|
postShutdown |
يتم إستدعاؤها بعد إغلاق جميع النوافذ و خلال إغلاق لوحة العمل، لذلك تستعمل عادة من اجل حفظ حالة التطبيق أو تنظيف أي شيء تم إستدعاؤه ضمن الطريقة initialize |
صف المنظور الفهرس
كما ذكرت سابقاً يستعمل المنظور كحاوية للوحات العرض و المحرر لذلك عندما نريد ضم أي لوحة عرض أو محرر يجب علينا التصريح عن ذلك ضمن الصف Perspective و الذي هو موجود ضمن الملف Perspective.java كما هو موضح في (الشكل-11) و (الشكل-22)، و بما أننا في هذ الفصل لن نقوم بإجراء أي تعديل على التطبيق لذلك سنؤجل شرح كيفية ضم المحتويات للمنظور للفصل القادم.
(الشكل-11)
(الشكل-22)
صف نافذة لوحة العمل الفهرس
كل نافذة (نافذة لوحة العمل) في تطبيق RCP لديها صف من النوع WorkbenchWindowAdvisor الذي مهمته إرشاد واجهة المستخدم UI بكيفية تشكيل النافذة (مثال: حجم النافذة، موضعها … إلخ) إضافة لإمكانية التحكم بالكثير من محتويات النافذة (مثال: التحكم بكيفية عرض شريط الحالة، شريط الادوات … إلخ) لذلك يتم وراثة هذا الصف بواسطة صف جديد إسمه ApplicationWorkbenchWindowAdvisor و الي هو موجود ضمن الملف ApplicationWorkbenchWindowAdvisor.java كما هو موضح في (الشكل-11) و (الشكل-23)
(الشكل-11)
(الشكل-23)
من الشيفرة السابقة نلاحظ أنه تم إعطاء النافذة أبعاداً إفتراضيةً، ثم تم إخقاء شريط الادوات، ثم إخفاء شريط الحالة، و بعدها تم إعطاؤها تسيمة Hello RCP.
configurer.setInitialSize(new Point(400, 300)); configurer.setShowCoolBar(false); configurer.setShowStatusLine(false); configurer.setTitle("Hello RCP"); |
و بما أن هذا الصف هو المسؤول عن كيفية تشكيل النافذة لذلك تم تخصيص مجموعة من الطرق التي مهمتها توسيع إمكانية التحكم بالنافذة.
و الجدول التالي يوضح هذه الطرق:
|
الطريقة |
الوصف |
|---|---|
|
preWindowOpen |
يتم إستدعاؤها من قبل بنّاء constructor نافذة لوحة العمل، لذلك تستعمل هذه الطريقة من أجل تخصيص النافذة بشكل عام (مثال: تخصيص النافذة فيما إذا كانت سملك شريط قوائم أم لا)، و يجب الإنتباه إلى أنه لم يتم إنشاء النافذة حتى الآن لأن هذه الطريقة تعتبر نقطة بدء حياة النافذة |
|
postWindowRestore |
يتم إستدعاؤها عندما يتم إستعادة النافذة من حالة الحفظ لكن قبل فتح النافذة |
|
postWindowCreate |
يتم إستدعاؤها بعد إستعادة النافذة من حالة الحفظ لكن قبل فتح النافذة |
|
openIntro |
يتم إستدعاؤها مباشرة قبل فتح النافذة و ذلك من أجل إنشاء مكوّن نافذة المقدّمة intro window |
|
postWindowOpen |
يتم إستدعاؤها مباشرة بعد فتح نافذة لوحة العمل و تسعمل عادة من أجل وضع إجراءات المظهرية النهائية للنافذة (مثال: تخصيص عنوان النافذة ، قياسها .. إلخ) |
|
preWindowShellClose |
يتم إستدعاؤها قبل إغلاق النافذة |
|
postWindowClose |
يتم إستدعاؤها بعد إغلاق النافذة، لذلك تعتبر هذه الطريقة مكاناً آمنا لتنظيف أي شيء تم إستعماله في الطريقة preWindowOpen |
صف قائمة الأعمال الفهرس
مهمة الصف ApplicationActionBarAdvisor هي الربط بين أوامر المكونات المرئية التالية:
أشرطة الأدوات، و أشرطة القوائم، و شريط الحالة
السبب الرئيسي لإنشاء هذا الصف هو أن هنالك أوامر مشتركة بين المكونات الثلاثة السابقة (مثال: الأمر “قتح” مشترك بين شريط القوائم و شريط الأدوات و شريط الحالة، لذلك من الغباء كتابة شيفرة الأمر “فتح” ثلاثة مرات، نكتب الشيفرة مرة واحدة و نعمّمها على المكونات الثلاثة ضمن هذا الصف)
هذا الصف متواجد في الملف ApplicationActionBarAdvisor.java كما هو موضح في (الشكل-11) و (الشكل-24)
(الشكل-11)
(الشكل-24)
و بما أننا في هذا الفصل نريد إنشاء تطبيق بأبسط أشكاله، لذلك لن نقوم بإجراء أي تعديل على هذا الصف، و سنتركه للفصل القادم.

[...] لمن يريد تحميل eclipse مع PHP أنصحه بإتباع هذه الإرشادات مع تعديل بسيط بإختيار التوزيعة الخاصة بـPHP … و قريبا [...]
السلام عليكم و رحمة الله و بركاته …
الأخ الكريم,,,
اود ان اشكرك جزيل الشكر على هذه السلسلة الرائعة من المقالات عن موضوع ال RCP…
انا قضيت اكثر من خمس ساعات بحثا عن الموضوع بطريقه سهلة لأني احتاجه في اول تمرين لي على ال RCP… اسلوبك سهل و بسيط و مناسب لمعظم المبرمجين… و انتمنى ان تستمر في هذا العمل الطيب ان شاء الله …
عسى الله ان ينفعنا و اياكم بما فيه الخير لنا و للمسلمين ان شاء الله …
و السلام عليكم و رحمة الله و بركاته
أخي الكريم
مشكور جدااا على هده الدروس المفيدة جدااا و ان شاء الله تستمر في التمييز …
اخي انا مطور بلغة asp و كنت اسئل عن امكانية تحويل php الى asp خصوصا ان php سهل بالمقارنة مع asp
ان شاء الله أخي جاوبني على اميلي عندك
+
وان أكترت عليك ان تعطني رابط برنامج سهل ومميز لتطوير بلغة php
مشكور جدا و الله يبارك
الأخ نبيل
بإمكانك الإطلاع على هذا الرابط
للأسف لا توجد عندي خبرة بالـasp
[...] و المتمثّلة بمبدأ التوسيعة و نقطة التوسيعة (راجع هذا الرابط)، لذلك أي * مبرمج يستعمل تقنية RCP لن يتخلّى [...]
هل تنصحني ب EasyEclipse 1.2.2 أو EasyEclipse 1.3.1 ؟
أنا أستخدم لينكس أوبونتو فهل من الممكن أن تتنصب اﻹضافات الجديدة عند عمل أبديت بواسطة update-manager ؟
إذا أردت تعلم الجافا هل أستخدم EasyEclipse Desktop Java أو
EasyEclipse for Plugins and RCP Apps
و هل اﻷخيرة يمكن أن تعمل عمل الإتنين أم ﻻ؟
هل أحتاج SDK أو ﻻ ؟
طبعاً الإصدار الأحدث هو الأفضل
نعم
توزيعة RCP هي التوزيعة الأشمل و تصلح لكل من يريد إنشاء تطبيقات جافا أو برامج إضافية أو برامج RCP
لست بحاجة لحزمة تطوير البرمجيات SDK إن كنت ستستعمل توزيعة EasyEclipse
و إذا إستعمات eclpse هل أحتاج SDK أو ﻻ؟
أنت بحاجة لآلة جافا الإفتراضية فقط
اشكرك جزيل الشكر على هذه المعلومات القيمة
طبعا الكلام لن يوفيك حقك ولكنك بالفعل فعلت الكثير لأجلنا فجزاك الله خيرا
وسؤالى هل يوجد اجزاء اخرى لشرح هذه التقنية
السلام عليكم اخوي انا مبتدى وماعندي خلفيه عن برمجة البرامج
جافا ياليت تعطينا الزبدة لاهنت
السلام عليكم
أجوا مساعدتي أنا ارغب في عمل ابليكيشن في جهاز النقال
أغب في معرفة انواع البرامج المستخدمة مع الشرح
ولكم جزيل الشكر