During learn and experience

GWT 2.0 Release Candidate 1 (قسمت 2)



ادامه قسمت 1 ...

ایجاد رابط کاربری بصورت Declarative با استفاده از UIBinder:
قابلیت UIBinder به توسعه دهندگان این امکان را می دهد که بیشتر قسمت های رابط کاربری را بصورت Declarativeتعریف کنند. در نسخه های قبلی ، widget ها با کدنویسی ایجاد می شدند و به یکدیگر (با استفاده از Panel ها) متصل می شدند که این فرایند به کدنویسی زیادی نیاز داشت. در GWT 2 توسعه دهندگان می توانند با استفاده از XML ، رابط کاربری خودشان را تعریف کنند این امر باعث می شود کدهای خواناتری بوجود بیاید ، نگهداری آنها آسانتر باشد و توسعه آنها سریعتر باشد. مثال Mail نمونه استفاده عملی از قابلیت UIBinder می باشد.

Bundling of Resources via ClientBundle:
بمنظور انجام عملیات spriting (چسباندن تصاویر برنامه به یکدیگر و تولید یک تصویر یکپارچه با حجم فشرده) خودکار مکانیزم ImageBundle در GWT 1.4 معرفی شد. ClientBundle روش تعمیم یافته این تکنیک برای بهینه سازی فرایند دانلود تمامی منابع سمت سرور (css ، text files ، XML) می باشد. این تکنیک باعث کاهش ترافیک شبکه می شود و می تواند تاخیر در زمان پاسخ برنامه های تحت وب (مخصوصا برروی موبایل) را کاهش دهد.

نوع ساده تر شده Unit Testing با استفاده از HtmlUnit:
با استفاده از HtmlUnit فرایند تست سریعتر انجام می شود و دیگر نیازی به راه اندازی یک مرورگر واقعی برای انجام تست نیست بلکه به راحتی در حالت Development و با استفاده از یک Java Debugger می توان این کار را انجام داد.

شاد باشید.
۰۲ آذر ۸۸ ، ۱۳:۲۶ ۳ نظر موافقین ۰ مخالفین ۰
سعید زرین فام

GWT 2.0 Release Candidate 1 (قسمت 1)



با عرضه GWT 2 RC1 توسعه دهندگان GWT می توانند از امکانات جدید GWT 2 استفاده کنند (البته این نسخه هنوز نسخه نهایی نمی باشد و تیم GWT پیشنهاد کرده است از این نسخه برای تولید استفاده نشود). علاوه براین Google Plugin for Eclipse 1.2 RC1 نیز عرضه شده است که امکانات زیادی برای توسعه با استفاده از GWT 2 در خود دارد.

قابلیت های جدید قابل توجه در GWT 2:

In-Browser Development Mode:
در نسخه های قبل از GWT 2 ، حالت hosted یک مرورگر خاص به نام "مرورگر hosted" را بمنظور debug کدهای جاوا در اختیار توسعه دهنده قرار می داد ، این روش توسعه دهندگان را محدود می کرد (برای مثال استفاده از debugger های جاوااسکریپت یا نمایش فایل های فلش درون
"مرورگر hosted" امکان پذیر نبود). در GWT 2 صفحات وب درون مرورگرهای مشهور و شناخته شده ای(IE ، Firefox و...) که قرار است دیده شوند debug می شوند (نه درون "مرورگر hosted"). حالت development با استفاده از پلاگ این های مخصوص برای هر مرورگر که "Google Web Toolkit Developer Plugin" نام دارد به توسعه دهنده این امکان را می دهد در زمان توسعه و بمنظور debug از مرورگر مورد علاقه خود استفاده کند.

Developer-guided Code Splitting:
قابلیت code spliting با استفاده از
GWT.runAsync بهمراه گزارش های کامپایل (The Story of Your Compile) به توسعه دهندگان امکان می دهد مقدارقابل توجهی از کدهای GWT خود را بمنظورافزایش سرعت start up برنامه به چندین قسمت تقسیم کنند. تصور کنید که برای مشاهده یک فیلم ابتدا باید تمام آن فیلم را دانلود کنید. در حال حاضراکثر برنامه های AJAX رفتار اینچنینی دارند ، با استفاده از قابلیت code spliting می توانید فقط کمترین میزان اسکریپت مورد نیاز برای اجرای برنامه را در start up برنامه بارگزاری کنید سپس بر اساس در خواست های کاربر اسکریپت های باقی مانده برنامه بارگزاری خواهد شد.

ادامه دارد...

شاد باشید.

۲۷ آبان ۸۸ ، ۰۸:۳۶ ۳ نظر موافقین ۰ مخالفین ۰
سعید زرین فام

تالار GWT در سایت برنامه نویس




سلام
امروز بصورت کاملا تصادفی متوجه شدم در سایت برنامه نویس در بخش زبان های اسکریپتی یک تالار جدید برای GWT در نظر گرفته شده است. ولی متاسفانه فقط دو تا پست در این تالار وجود داشت و کاملا سوت و کور بود. اون دوتا پست هم توسط کاربری با نام اخباری گذاشته شده بود که یکی اعلام شروع به کار این تالار بود و دیگری تعدادی مطلب آموزشی در باره GWT. به نظر می رسید همین آقای اخباری پیگیر راه اندازی این تالار بوده (با تشکر از ایشون).
به هر حال با این پست خواستم اعلام کنم از این پس اگر هرگونه سوال تخصصی در زمینه GWT داشتید می توانید در این تالار مطرح کنید.
با تشکر از همکارانم در سایت برنامه نویس.

شاد باشید.
۲۲ آبان ۸۸ ، ۱۰:۱۳ ۲ نظر موافقین ۰ مخالفین ۰
سعید زرین فام

استفاده از کلاس Cipher در پروژه های Eclipse

سلام

امروز به یک مشکل تازه توی Eclipse برخوردم. یک پروژه جدید از نوع Java Project from existing Ant Buildfile ایجاد کردم سپس آدرس Ant Buildfile پروژه را وارد کردم. درون این پروژه من از کلاس javax.crypto.Cipher و کلاس های مر تبط با آن برای انجام کارهای مربوط به encryption و decryption استفاده کرده بودم. وقتی پروژه را اجرا می کردم به error زیر برمی خوردم:

[java] Exception in thread "main" java.lang.Error: Unresolved compilation problems:
[java] The import javax.crypto cannot be resolved
[java] The import javax.crypto cannot be resolved
...

برای حل این مشکل کافی است در پنجره Project Explorer برروی پروژه خود راست کلیک کنید و برروی گزینه Properties کلیک کنید سپس برروی گزینه Java Build Path کلیک کنید و از بین تب های سمت راست تب Libraries را انتخاب کنید و سپس برروی گزینه Add External Jar کلیک کنید ، در محلی که JRE برروی سیستم شما نصب شده است به دایرکتوری lib بروید و فایل jce.jar را انتخاب کرده و برروی دکمه Open کلیک کنید و در نهایت برروی دکمه OK کلیک کنید.

اگر برنامه خود را مجددا اجرا کنید دیگر به این error بر نمی خورید.

شاد باشید.
۲۰ آبان ۸۸ ، ۱۰:۲۴ ۰ نظر موافقین ۰ مخالفین ۰
سعید زرین فام

اجرای Tomcat برروی Windows 7

سلام
امروز وقتی می خواستم برای اولین بار Tomcat را روی Windows 7 نصب کنم به یک مشکل بر خوردم. Tomcat (نسخه 6.0.20) بدون هیچ مشکلی نصب شد ولی زمانی که بعد اتمام مراحل نصب می خواستم سرویس Tomcat را اجرا کنم پیغام زیر را دریافت می کردم.

windows could not start the Apache tomcat ... service-specific error code 0.

پس از کمی جستجو در Google در یک مطلب راه حل ساده ای برای رفع این مشکل پیدا کردم. در این مطلب آمده بود مشکل از اینجا است که JRE نمی تواند فایل msvcr71.dll را پیدا کند یا اینکه Tomcat به آن دسترسی ندارد.
راه حل ساده پیشنهادی در این مطلب ، کپی کردن فایل مورد نظر (که درون فولدر JRE قرار دارد) درون فولدر bin محل نصب Tomcat بود.

شاد باشد.


۱۳ آبان ۸۸ ، ۱۱:۰۲ ۱ نظر موافقین ۰ مخالفین ۰
سعید زرین فام

اجرای مستقیم دستورات جاوااسکریپت با استفاده از SWT Browser Widget

اگر به یاد باشه در پست Web Browser در جاوا یک کامپوننت SWT را معرفی کردیم که بعنوان یک Web Browser می توانست صفحات HTML و جاوااسکریپت را نمایش دهد.
این کامپوننت (widget) قبلیت این را دارد که دستورات جاوااسکریپت را مستقیما اجرا کند. برای مثال دستور جاوااسکریپت :
alert(”1″);
را با استفاده از این کامپوننت (widget) اجرا می کنیم:



package testcode;

/**

*
* @author Saeed Zarinfam
*/
import org.eclipse.swt.SWT;
import org.eclipse.swt.browser.Browser;
import org.eclipse.swt.browser.ProgressEvent;
import org.eclipse.swt.browser.ProgressListener;
import org.eclipse.swt.layout.FillLayout;
import org.eclipse.swt.widgets.Display;

import org.eclipse.swt.widgets.Shell;

/*
* http://www.eclipse.org/swt/snippets/
*/
public class NewMain {

public static void main(String[] args) {
final Display display = new Display();
Shell shell =
new Shell(display);
shell.setLayout(
new FillLayout());
final Browser browser = new Browser(shell, SWT.NONE);
if (browser != null) {
browser.setUrl(
"http://www.google.com");
browser.addProgressListener(
new ProgressListener() {

@Override
public void completed(ProgressEvent event) {
System.out.println(
"Page loaded");
System.out.println
(browser.execute(
"alert(\"1\");"));
}

@Override
public void changed(ProgressEvent event) {
}
});

}
shell.open();
while (!shell.isDisposed()) {
if (!display.readAndDispatch()) {
display.sleep();
}
}
display.dispose();
}
}


۱۲ آبان ۸۸ ، ۰۸:۱۶ ۰ نظر موافقین ۰ مخالفین ۰
سعید زرین فام

2 سال گذشت ...

سلام
2 سال پیش بود که این وبلاگ راه اندازی شد. هدف اصلی راه اندازی این ویلاگ ، ثبت تجربیات در زمینه جاوا و تکنولوژی های مرتبط با آن بود.
امیدوارم تمام کسانی که از این وبلاگ دیدن کردند ، مطالب کاربردی و خوبی دیده باشند. توی این 2 سال 134 مطلب در زمینه های مختلف پست شده است.

شاد باشید.
۳۰ مهر ۸۸ ، ۱۰:۴۸ ۰ نظر موافقین ۱ مخالفین ۰
سعید زرین فام

در مورد خرید شرکت Sun توسط Oracle و آینده Netbeans

سلام
چندین ماه از بحث خرید شرکت Sun توسط Oracle می گذرد. مطالب زیادی درباره آینده محصولات سخت افزاری و نرم افزاری شرکت Sun منشر شده است ولی کماکان تمامی آنها گمانه زنی می باشد.



برای من بعنوان یکی از کاربران و علاقه مندان به Netbeans ، آینده Netbeans و Netbeans Platform مهم می باشد. تحلیل شخصی من این است که بدلایلی که در ادامه مطلب ذکر می کنم Oracle چاره ای جز زنده نگه داشتن Netbeans ندارد. Netbeans دارای ویژگی های منحصر بفردی است که از جنبه های زیادی زنده نگه داشتن آن و ادامه توسعه آن برای Oracle منافع زیادی دارد:
  1. Netbeans طراحی و معماری مدرن و خوش ساختی دارد و می تواند براحتی بستری با Performance بالا و امکانات زیاد برای محصولات Oracle بنا کند (SQL Developer ، JDeveloper و...).
  2. طبق گمانه زنی ها به احتمال خیلی زیاد Oracle سرمایه گزاری زیادی برروی توسعه JDK خواهد کرد و Netbeans بعنوان یکی از بهترین best practice ها برروی JDK آینده روشنی خواهد داشت.
  3. اگر Oracle بخواهد وارد مبارزه IDE های جاوا شود بهترین گزینه برای رقابت با Eclipse در میان IDE های موجود در جاوا ، Netbeans می باشد که بدلیل محبوبیت زیاد و قابلیت های خوب تنها IDE موجود در بازار است که در مبارزه با Eclipse جان سالم بدر برده است.
  4. بسیاری از محصولات اراکل (SQL Developer ، JDeveloper و...) از مشکلاتی مانند کارایی پایین ، حجم فیزکی بالا و... رنج می برند در حالی که کارایی مناسب و حجم فیزیکی فوق العاده پایین از مزیت های Netbeans Platform می باشد.
در نهایت پیش بینی من این است که قرار دادن محصولاتی نظیرSQL Developer ، JDeveloper و... برروی Netbeans Platform و یا تبدیل آنها به پلاگ این های Netbeans هم هزینه زیادی برای Oracle ندارد و هم آینده محصولات Oracle را روشن تر خواهد کرد.

شاد باشید.

۲۶ مهر ۸۸ ، ۰۸:۲۹ ۰ نظر موافقین ۱ مخالفین ۰
سعید زرین فام

GWT CodeSplitting

CodeSplitting یکی از قابلیت های فوق العاده ای است که قرار است در GWT 2 اضافه شود. برای روشن شدن دلیل اینکه چراتیم توسعه GWT تصمیم گرفته است چنین قابلیتی را به GWT اضافه کند ، ابتدا توضیحی در مورد مشکلات موجود داده می شود سپس در باره کلیات این قابلیت جدید توضیحاتی آورده می شود.

برنامه های AJAX بیشتر کارهای خود را با استفاده از جاوااسکریپت انجام می دهند و این سبب می شود که حجم کدهای جاوااسکریپت برنامه بالا رفته و تاثیر مستقیمی برروی زمان اجرای اولیه برنامه بگذارد.
اگر به خروجی کامپایلر GWT توجه کرده باشید ، این کامپایلر به ازای هر مرورگر (و زبان های که برنامه شما از آن پشتیبانی می کند) یک فایل جاوااسکریپت با قالب نام XXXXXXXXXXXXXXXXXXXXXXX.cache.html برای شما ایجاد می کند. زمانی که حجم کدهای برنامه شما کم است این فایل ها حجمی حدود 100 تا 150 کیلوبایت دارند که باید در زمانی که کاربر اولین درخواست مشاهده برنامه شما را داد برروی مرورگر کاربر بارگزاری شود. اما وقتی حجم کدهای برنامه شما افزایش می یابد حجم این فایل ها نیز زیاد می شود (در بعضی موارد حتی بیشتر از 500 کیلوبایت ) در اینصورت کاربر برای مشاهده برنامه شما باید باید مدت زمان زیادی منتظر باشد.
CodeSplitting به شما این امکان را می دهد در زمان نوشتن برنامه با استفاده از دستور GWT.runAsync مکانهایی که می خواهید برنامه split شود را مشخص کنید. با این کار قسمت هایی از برنامه که با این روش مشخص کرده اید در زمان کامپایل درون یک فایل جداگانه کامپایل می شود و در زمان اجرا نیز در هنگام بارگزاری اولیه برنامه برروی مرورگر کاربر بارگزاری نمی شود بلکه در صورت نیاز بارگزاری می شود.

به مثال زیر توجه کنید:
با اضافه شدن این قابلیت در GWT 2 شما می توانید بر حجم فایل های جاوااسکریپت ارسالی برای کاربران کنترل داشته باشید.

شاد باشید.
۲۵ شهریور ۸۸ ، ۰۸:۳۸ ۱ نظر موافقین ۰ مخالفین ۰
سعید زرین فام

چگونگی تغییر ظاهر look and feel) Netbeans)

اگر دوست دارید برای تنوع هم شده ظاهر Netbeans را تغییر دهید ، می توانید با اعمال تنظیماتی در فایل netbeans.conf که در فولدر etc (درون فولدری که Netbeans را نصب کرده اید) قرار دارد از این به بعد Netbeans را با ظاهر جدید ببینید.
برای این کار کافی است look and feel مورد نظر خود را بصورتی که در ادامه گفته می شود درون فایل netbeans.conf اضافه کنید.
برای مثال اگر می خواهید از ظاهر جدید Nimbus که در JDK 6 update 10 ارائه شده است استفاده کیند کافی است مقدار زیر را در انتهای مقادیر متغییر netbeans_default_options درون فایل netbeans.conf اضافه کنید:

--laf com.sun.java.swing.plaf.nimbus.NimbusLookAndFeel

پس از ذخیره تغییرات اعمال شده در صورتی که Netbeans را بسته و مجددا اجرا کنید تغییر ظاهر در Netbeans را مشاهده خواهید کرد.



منبع: Java How To ...

شاد باشید.
۰۹ شهریور ۸۸ ، ۰۶:۴۱ ۱ نظر موافقین ۰ مخالفین ۰
سعید زرین فام

EntryPoint در برنامه های GWT

سلام
دیروز یکی از همکارام بصورت تصادفی متوجه شد که در برنامه های GWT کلاسی که متد onModuleLoad درون آن قرار دارد لزومی ندارد که حتما رابط EntryPoint را implement کرده باشد و فقط کافی است امضای صحیح متد onModuleLoad را درون خود داشته باشد و درون فایل gwt.xml نیز آن کلاس بعنوان نقطه آغازین برنامه معرفی شده باشد.

جالب بود نه !

شاد باشید.
۲۵ مرداد ۸۸ ، ۲۳:۱۲ ۰ نظر موافقین ۱ مخالفین ۰
سعید زرین فام

GWT Architecture



چند روز پیش عکس فوق را درباره معماری GWT دیدم که خیلی عالی معماری یک برنامه GWT را تشریح کرده بود (البته بغیر از اینکه درباره hosed mode و hosted mode browser چیزی نگفته است).

همانطور که ملاحظه می کنید عکس فوق دو قسمت اصلی دارد ، که من نام آنها را قسمت بالا و قسمت پایین عکس می گذارم و همچنین چهار مربع زرد رنگ عملیات های لازم برای تولید یک برنامه GWT را تشریح کرده است ، این عملیات عبارتند است:
  • Write: عملیات نوشتن کد برنامه GWT (هم سمت سرور و هم سمت کلاینت).
  • Compile: کامپایل کدهای سمت کلاینت برنامه GWT به جاوااسکریپت.
  • Run/Test: اجرای برنامه برروی سرور.
همانطور که در قسمت بالای عکس مشاهده می کنید یک عملیات Write وجود دارد که مربوط به کدهای جاوایی است که در نهایت باید به جاوااسکریپت کامپایل شوند (کدهای سمت کلاینت). همانطور که ملاحظه می کنید این قسمت از معماری GWT از دو مولفه اصلی کتابخانه زمان اجرای جاوای شبیه سازی شده توسط GWT و کتابخانه رابط کاربری GWT تشکیل شده است.

کتابخانه زمان اجرای جاوا(شبیه سازی شده توسط GWT) : نسخه شبیه سازی شده GWT از بخشی از کتابخانه JDK می باشد.
کتابخانه رابط کاربری GWT : این کتابخانه حاوی کامپوننت هایی برای ایجاد رابط کاربری برنامه می باشد که به دو دسته زیر تقسیم می شوند:
  • widget: کامپوننت هایی که ظاهر یک برنامه را تشکیل می دهدند (نظیر: Button ، TextBox و ...)
  • panel: کامپوننت هایی که بمنظور چینش و مشخص کردن ترتیب widget ها مورد استفاده قرار می گیرند و widget ها را درون خود جای می دهدند.
ادامه دارد...

شاد باشید.


۱۱ مرداد ۸۸ ، ۱۳:۱۰ ۰ نظر موافقین ۱ مخالفین ۰
سعید زرین فام

عرضه GWT 1.7

GWT 1.7 عرضه شد.

این نسخه بصورت کامل از IE8 ، Firefox 3.5 و Safari 4 پشتیبانی کرده و علاوه بر این تعداد کمی از bug های با اولویت بالا نیز در این نسخه رفع شده است.
بسیاری از خصوصیات این نسخه شبیه نسخه 1.6 است ، سایت GWT تغییر release از 1.6 به 1.7 را بدلیل تغییراتی می داند که برای پشتیبانی از مرورگرهای جدید در کتابخانه هایی که از deferred binding استفاده می کنند بوجود آمده است.

بدلیل اینکه IE8 چندین تغییر قابل توجه behavioral به نسبت نسخه های قبل داشته است و این تغییرات نیز به اندازه کافی بزرگ می باشد. در نسخه 1.7 مقدار جدید ie8 بعنوان مقدار جدید خصوصیت سمت کلاینت user.agent برای عملیات deferred binding اضافه شده است.

bug های رفع شده:
  • بروزرسانی کتابخانه های GWT برای پشتیبانی از IE8
  • خطای جاوااسکریپت در متد ()Node.is
  • Mouse wheel در Firefox 3
  • خطای java.sql.Date.valueOf
  • و...
توسعه دهنده گان ایرانی بمنظور دانلود GWT می توانند از این لینک استفاده کنند (در صورتی که GWT 1.7 در این لینک وجود نداشت در چند روز آتی اضافه خواهد شد).

شاد باشید.
۲۳ تیر ۸۸ ، ۰۸:۱۴ ۱ نظر موافقین ۱ مخالفین ۰
سعید زرین فام

مقایسه Apache Wicket با GWT




امروز مطلبی درباره Apache Wicket خوندم (Apache Wicket یک Framework تولید برنامه های تحت وب با استفاده از تکنولوژی جاوا است).
دلیل اینکه تصمیم گرفنم این مقایسه رو انجام بدم ، شبا هت هایی بود که این Framework با GWT دارد. اصلی ترین شباهتی که بین این دو Framework وجود دارد ، نحوه برنامه نویسی با این دو Framework است. برنامه نویسی با آنها شبیه برنامه نویسی Swing (یا اصطلاحا Swing Like) است. بدین معنی که توسعه دهندگان وب بجای سرو کار داشتن با tag برای تولید برنامه وب خود با کلاس های جاوا و برنامه نویسی شئ گرا روبرو هستند (که این سبک مزیت های خاص خود را دارد).

تفاوت اصلی این دو Framework درمعماری آنها و چگونگی عملکرد آنها در زمان اجرا است.
Apache Wicket همانند JSF یک Framework سمت سرور (server side) است و در خواست های کاربر در زمان اجرا و در سمت سرور render می شود در حالی که GWT یک Framework سمت کلاینت (client side) است و در خواست های کاربر در زمان اجرا در سمت کلاینت و توسط جاوااسکریپت پاسخ داده می شود. این امر سبب می شود بار پردازشی سمت سرور در GWT کاهش یافته و همچنین حجم اطلاعات ردوبدل شده بین کلاینت و سرور نیز کاهش می یابد.
GWT Compiler یکی دیگر از برتری های GWT به نسبت Apache Wicket است. این کامپایلر برنامه نویسی جاوااسکریپت را برای کاربران آسان می سازد و کاربر می تواند به راحتی کامپونت های سازگار با تمامی مرورگرها با جاوااسکریپت تولید کند.

بطور حتم تفاوت ها و شباهت های بیشتری بین این دو Framework وجود دارد.

شاد باشید.
۲۱ تیر ۸۸ ، ۰۸:۴۲ ۱ نظر موافقین ۱ مخالفین ۰
سعید زرین فام

Named Query ها در JPA

JPA بمنظور تعریف EJBQL های از پیش تعریف شده مکانیزمی را فراهم کرده است که Named Query نام دارد. با این مکانیزم شما می توانید در زمان ساخت query با استفاده از نام Named Query به آن ارجاع بزنید.
به چند دلیل ممکن است شما بخواهید از این مکانیزم استفاده کنید ، اول اینکه با این روش می توانید از یک query در چندین موقعیت مختلف استفاده کنید ، دوم اینکه می توانید آن query را بدون نگرانی از اینکه در مکان های مختلف برنامه مورد استفاده قرار گرفته است بهبود دهید و بهینه سازید و یا ویرایش کنید.

مثال:
@Entity
@
Table(name = "ole_exam")
@
NamedQueries({
@
NamedQuery(name = "Exam.findByExamId", query = "SELECT e FROM Exam e WHERE e.examId = :examId")})
@
Entity
public class Exam implements Serializable {
...
}

در مثال بالا برای کلاس Exam یک Named Query تعریف شده است که یک پارامتر نیز می گیرد. شما می توانید با استفاده از تکه کد زیر این Named Query را فراخوانی کنید و همچنین به آن query پارامتر ارسال کنید:

Query query = em.createNamedQuery("Exam.findByExamId");
query.setParameter("
examId", 13);

شاد باشید.
۱۳ تیر ۸۸ ، ۰۸:۴۹ ۱ نظر موافقین ۱ مخالفین ۰
سعید زرین فام

چگونه زمانی که یک DialogBox را نمایش می دهیم پنل پشت آن را Mask کنیم ؟

همانطور که در بسیاری از برنامه های AJAX مشاهده کرده اید پس از نمایش یک DialogBox عناصر پشت DialogBox همگی تیره و شفافیت آنها نیز کم می شود. در GWT در زمان نمایش یک DialogBox این اتفاق نمی افتد و فقط می تواند عناصر پشت DialogBox را غیر فعال کرد با استفاده از تکه کدهای زیر می توانید به راحتی به این functionality برسید.
.mask-panel {
filter:alpha(opacity=50);
-moz-opacity:.50;
opacity:.50;
background: gray;
}

ابتدا css rule بالا را درون فایل css خود کپی کنید.
فرض می کنیم که برنامه شما یک پنل دارد که 100 درصد صفحه را پوشانده است وتمامی عناصر صفحه درون آن افزوده می شود و نام آن mainPanel است. کافی است شما هر زمانی که می خواهید DialogBox خود را نمایش دهید با استفاده از کد زیربه mainPanel یک style جدید اضافه کنید (همان css rule که در بالا تعریف شد):

mainPanel.addStyleName("mask-panel");

و زمانی که DialogBox بسته می شود آن style را حذف کنید:

mainPanel.removeStyleName("mask-panel");

شاد باشید.
۱۰ تیر ۸۸ ، ۰۹:۱۹ ۰ نظر موافقین ۰ مخالفین ۰
سعید زرین فام

نیاز به برنامه نویس GWT (موقعیت شغلی)

سلام
به برنامه نویس GWT جهت همکاری در یک شرکت بزرگ نرم افزاری (واقع در تهران) با مهارت های زیر بصورت تمام وقت نیازمندیم:

مهارت ها :
  • GWT
  • JPA
  • JSP و Servlet
علاقمندان می توانند resume خود را به پست الکترونیکی zarinfam.s@gmail.com ارسال کنند.

شاد باشید.
۰۲ تیر ۸۸ ، ۱۲:۲۸ ۰ نظر موافقین ۰ مخالفین ۰
سعید زرین فام

RootPanel در GWT

RootPanel اصلی ترین پنلی است که شما در تولید یک برنامه GWT به آن احتیاج دارید ، این پنل در رابط کاربری که توسط شما تولید می شود نمایان نیست در حقیقت این پنل یک container برای عناصر پویای برنامه شما می باشد. این پنل در بالاترین سطح سلسله مراتب رابط کاربری هر برنامه GWT قرار دارد. دو دلیل برای استفاده از RootPanel وجود دارد ، یکی برای ایجاد بدنه داخلی صفحه برنامه شما می باشد و دیگری برای ایجاد عناصر خاص بصورت توکار در بدنه برنامه می باشد.
پنل اصلی با wrap کردن (بسته بندی کردن) یک عنصر در صفحه HTML کار می کند. بصورت پیش فرض RootPanel عنصر body صفحه HTML را wrap می شود. البته شما می توانید هر کدام از عناصر صفحه را wrap کنید بشرطی که آن عنصر HTML را نام گذاری کنید (id داشته باشد)و در زمان فراخوانی RootPanel آن نام را بعنوان پارامتر ارسال کنید.

RootPanel.get() // Default. Wraps the HTML body element.
RootPanel.get("yourHTMLElementName") // Wraps any HTML element with an id of "stockList"

یک صفحه اصلی می تواند حاوی چندین RootPanel باشد. برای مثال اگر شما چندین کامپوننت GWT یا پنل را درون صفحه اصلی قرار دهید ، هر کدام از آنها می توانند بصورت مستقل پیاده سازی شوند و درون RootPanel مخصوص به خود قرار گیرند.
پس از اینکه با استفاده از متد get به ارجاع RootPanel مورد نظر خود دسترسی پیدا کردید می تواند با استفاده از متد add کامپوننت ها و پنل های مورد نظر خود را درون آن قرار دهید.

RootPanel.get() .add(...);

شاد باشید.

۰۲ تیر ۸۸ ، ۱۱:۰۷ ۰ نظر موافقین ۰ مخالفین ۰
سعید زرین فام

گل زرد

سلام
تعقل و تفکر ارزشمندترین ابزاری است که خداوند در وجود ما قرار داده است. ولی چرا بعضی ها ازش استفاده نمی کنند ، نمی دونم ، ولی تقریبا به این اطمینان دارم که کسانی که از این توانایی فطری استفاده نمی کنند خودشون می خواهند که استفاده نکنند (چوبشم می خورن و نمی تونن گردن کسی بیاندازن).



افسوس.
یک دو بیتی مشهوربه یادم اومد می نویسم و با خودم زمزمه می کنم:

گل زردو
گل زردو گل زرد
بیا با هم بنالیم از سر درد
عنان تا در کف نامردمان است
ستم با مرد خواهد کرد نامرد

شاد باشید.
۲۷ خرداد ۸۸ ، ۱۰:۳۸ ۰ نظر موافقین ۱ مخالفین ۰
سعید زرین فام

احترام به عقاید دیگران

امروز داشتم به این فکر می کردم که مگه احترام گذاشتن به اعتقادات و تفکرات دیگران چقدر سخته که این همه درگیری و نزاع در دنیا وجود داره (البته منشا این فکر درگیری های اخیر ، بعد از انتخابات ریاست جمهوری در ایران بود). به نظر من هر انسانی حق داره هر جوری دلش می خواد فکر کنه (البته تا موقعی که به شخص یا اشخاصی آسیب نرسونه ) اگه همه مردم دنیا یاد بگیرند (اولیش خودم) با صحبت کردن و تعامل کردن مشکلاتشونو حل کنن ، این همه درگیری بوجود نمی اومد.
هفته پیش داشتم فیلم Milk رو نگاه می کردم. حضمش برام خیلی سخت بود که در بین سال های 1970 تا 1975 چه مبارزاتی برای احقاق حقوق همجنس بازان در آمریکا انجام شده و اینکه بالاخره این گروه تونستن جایگاه خودشونو در کشورشون پیدا کنن.
فکر اینکه معلم بچت تو مدرسه همجنس بازه واقعا سخته یا اینکه یکی از همکارات که با هم خیلی صمیمی هستید همجنس بازه خیلی دشواره ولی معجزه ای که احترام به عقاید دیگران با صحبت کردن و تعامل می کنه باور نکردیه.
به نظر من یکی دیگه از معضلاتی که باعث میشه ما آدما با هم به تفاهم نرسیم اینه که همش فکر کنیم که فقط من درست می گم و بقیه دارن راه اشتباه رو می رن و حرفاشون حتی ارزش گوش دادن رو هم نداره. این طرز فکر به مرور زمان آدمو به ورطه نابودی می رسونه و از انسان یه شخصی می سازه که کاملا خود رای و خودکامه است و متسفانه بسیاری از ادیان و مذاهب هم با همین رویکرد به تعیین روش زندگی افراد پرداخته اند که در نهایت باعث میشه طرفداران اون ادیان و مذاهب هیچ نظر مخالفی رو برنتابند و فقط فکر کنند راهی که مذهب و دین خودشون معرفی کرده درست است.

ما برنامه نویسا هم در دنیای programming از این مشکلات زیاد داریم ولی خوش بختانه در بسیاری از موارد با تولید پروتکل هایی (نظیر HTTP) و یا استاندارد هایی (نظیر Web Service) به هم دیگه اجازه می دهیم در حالی که در یک تیم فعالیت می کنیم و در کنار یکدیگر برای یک هدف تلاش می کنیم ولی با این حال هر کدام از اعضای تیم بتواند از زبان برنامه نویسی دلخواه خودش استفاده بکنه و با دیگری تعامل داشته باشه.

نتیجه فکر کردنم به اینجا رسید که ما آدما با قرار دادن یکسری قوانین و استاندارد ها می توانیم در یک جامعه در کنار یکدیگر بدون هیچ مشکلی زندگی کینم و به عقاید هم احترام بگذاریم (چشم بسته غیب گفتم خیلی از کشورهای دنیا این کارو کردن) ، البته به دو شرط:
  1. این قوانین و استاندارد ها وجود داشته باشه (و با نظر عمومی تصویب و یا اصلاح بشه).
  2. همه به این قوانین احترام بگذارند.
شاد باشید.

۲۴ خرداد ۸۸ ، ۱۰:۲۳ ۴ نظر موافقین ۱ مخالفین ۰
سعید زرین فام