åQ?/SPAN>1åQ‰åˆ›å»ºå·¥½E?/SPAN>
l åœ?/SPAN>Eclipseä¸åˆ›å»ºå¦‚下图的简å•å·¥½E?/SPAN>
åQ?/SPAN>2åQ‰æŒ‡å®?/SPAN>Repositoryä½ç½®
l Windows -> Open Perspective -> Other
l 选择CVS Repository Exploring™å¹ï¼Œæ‰“å¼€CVS Repository Exploring
l åœ?/SPAN>CVS Repositories视图ä¸å³å‡»ï¼Œé€‰æ‹©New -> Repository Location
l 指定CVSä¸ÀLœºåå’ŒRepository路径åQˆå¸¦/çš?/SPAN>Repositoryå)
l 指定用户å和密ç
l 指定通信åè®®åQŒé€šå¸¸ä½¿ç”¨pserver
l 点击Finish创å¾Repositoryä½ç½®ä¿¡æ¯
åQ?/SPAN>3åQ‰å…±äº«å·¥½E?/SPAN>
l åœ?/SPAN>Navigator视图ä¸å³å‡Õd·¥½E‹ååQŒé€‰æ‹©Team -> Share Project
l 选择已创建的Repositoryä½ç½®åQˆä¹Ÿå¯ä»¥åœ¨æ¤å¤„新建)
l ¾~ºçœä½¿ç”¨å·¥ç¨‹å作为模å—å
l å‘导的最åŽä¸€™å‰|˜¾½Cºå·¥½E‹ä¸ž®†è¦è¢«æäº¤å’Œ˜q½åŠ çš„æ–‡ä»?BR>
l 点击Finish按钮完æˆå…׃ínåQŒæœŸé—´å¯¹æäº¤å’Œè¿½åŠ ç¡®è®¤éƒ½é€‰æ‹©YesåQŒåƈå¯ä»¥è¾“å…¥æè¿°æ€§æ³¨é‡?/SPAN>
l å…׃ínåŽçš„工程如下图所½C?BR>
åQ?/SPAN>1åQ‰ç®€˜q?/SPAN>
l CVS åQ?/SPAN>Concurrent Versions SystemåQ‰ç³»¾lŸåœ¨å›¢é˜Ÿå¼€å‘项目时˜q›è¡Œç‰ˆæœ¬æŽ§åˆ¶åQŒé‡‡ç”¨çš„æ˜?/SPAN>C/Sæž¶æž„
l Eclipse内å¾äº?/SPAN>CVS客户端,方便团队CVS控制
l ç›®å‰Unixòq›_°éƒ½å¸¦CVSæœåŠ¡å™¨ï¼ŒWindowsòq›_°æ¯”较‹¹è¡Œçš„æ˜¯CVSNTåQ?/SPAN>http://www.cvsnt.com/cvspro/åQ?/SPAN>
l å…ˆè¦å®‰è£…CVSNTåQˆæˆ‘的是åœ?/SPAN>Windows 2003 Server上)
l 安装完åŽå¯åЍCVSNT Control PanelåQŒå¯ä»¥åœ¨Service Status™åµä¸çœ‹åˆ°˜q行ä¸çš„æœåŠ¡
åQ?/SPAN>2åQ‰åˆ›å»?/SPAN>CVS Repository
l 选择Repositories™åµï¼Œç‚¹å‡»AddæŒ‰é’®åˆ›å¾æ–°çš„CVS Repository
l Location部分指定ä¿å˜Repository的目录(å¯ä»¥æ–°å¾åQ?/SPAN>
l Name部分指定Repositoryå(ä»?/SPAN>/开始)
l ¼‹®ä¿Publish Repository选ä¸
l 在确认åˆå§‹åŒ–Repositoryž®±åˆ›å»ºå¥½äº?/SPAN>Repository
åQ?/SPAN>3åQ‰é…¾|®é€‰é¡¹
l ä¸ÞZº†ä½?/SPAN>Eclipse能够æ£å¸¸å’?/SPAN>CVSNT通信åQŒè¿˜è¦å°†Compatibility™åµä¸çš?/SPAN>Respond as cvs 1.11.2 to version request™åšw€‰ä¸
åQ?/SPAN>4åQ‰ç”¨æˆïL®¡ç?/SPAN>
l CVSNT最½Ž€å•的用户½Ž¡ç†æ–¹å¼ž®±æ˜¯å’?/SPAN>NT验课l“åˆåQŒè¿™æ øP¼Œåˆ›å¾ä¸€ä¸?/SPAN>NT用户也就创å¾äº†ä¸€ä¸?/SPAN>CVS用户
l 通过¾pÈ»Ÿ½Ž¡ç†å‘˜è®¾¾|®ç”¨æˆïLš„讉K—®æƒé™æ¥æŽ§åˆ¶ç”¨æˆ·å¯¹CVS的访问,例如åQŒäؓ了ä‹É用户能够å?/SPAN>CVSæäº¤æ›´æ–°çš„æ–‡ä»Óž¼Œž®±å¿…™åÈ»™è¯¥ç”¨æˆ·å˜æ›´çš„æƒé™
åQ?åQ?/FONT> ExpandableComposite
l Web™åµé¢ä¸ä¸€ä¸ªé€šç”¨çš„主题是å…ähœ‰æ”¶ç¾ƒä¸€éƒ¨åˆ†™åµé¢å†…容的能åŠ?
l Eclipse Form也æä¾›äº†˜q™æ ·ä¸€ä¸ªæŽ§ä»Óž¼šExpandableComposite
l 下é¢çš„代ç ç‰‡æ–æ˜¯ä½¿ç”¨ExpandableComposite的一个例å:
ExpandableComposite ec = toolkit.createExpandableComposite(body,
ExpandableComposite.TREE_NODE
| ExpandableComposite.CLIENT_INDENT);
ec.setText("Expandable Composite title");
String ctext = "We will now create a somewhat long text so that "
+ "we can use it as content for the expandable composite. "
+ "Expandable composite is used to hide or show the text using the "
+ "toggle control";
Label client = toolkit.createLabel(ec, ctext, SWT.WRAP);
ec.setClient(client);
td = new TableWrapData();
td.colspan = 2;
ec.setLayoutData(td);
ec.addExpansionListener(new ExpansionAdapter() {
public void expansionStateChanged(ExpansionEvent e) {
form.reflow(true);
}
});
l ˜q™ä¸ªæŽ§äšg有很多风æ û|¼ŒTREE_NODEä½¿å¾—è¯¥æŽ§ä»¶å…·æœ‰æ ‘åž‹èŠ‚ç‚¹çš„å±•å¼€ã€æ”¶¾~©åŠŸèƒ½ï¼›è€?/SPAN>TWISTIE使得控äšgå…ähœ‰ä¸‰è§’½Žå¤´é£Žæ ¼
l EXPANDED使得åˆå§‹å±•开昄¡¤º
l CLIENT_INDENT使得Client内容¾~©è¿›å¯šw½
l ExpandableComposite呈现为激‹zÀLŽ§ä»¶å’Œæ ‡é¢˜åQŒè€Œå¯ä»¥å±•å¼€ã€æ”¶¾~©çš„内容¿UîCØ“Client
l Client必须是å¯å±•å¼€çš?/SPAN>compositeåQˆä¸Šä¾‹æ˜¯Label控äšgåQ?/SPAN>
l 最åŽéœ€è¦æ·»åŠ?SPAN lang=EN-US>Expansion监å¬å™¨åœ¨çжæ€å˜åŒ–æ—¶åQŒreflow FormåQˆå³æ ÒŽ®æŽ§äšg的新的大ž®é‡æ–°å®šä½å’Œæ›´æ–°æ»šåЍæ¡ï¼‰
l 䏋颿˜¯ä¸Šä¾‹çš„˜q行¾l“æžœåQ?BR>
åQ?SPAN lang=EN-US>2åQ‰Section
l Eclipse Form䏿œ€å¸¸ç”¨çš„定制控件就æ˜?/SPAN>SectionåQˆåœ¨PDEä¸åˆ°å¤„å¯è§ï¼‰
l Section扩展ExpandableCompositeåQŒä½†å…ähœ‰ä¸‹é¢çš„æ–°ç‰ÒŽ€§ï¼š
n åœ¨æ ‡é¢˜ä¸‹é¢æœ‰ä¸€ä¸ªåˆ†éš”æŽ§ä»?SPAN lang=EN-US>
n 在分隔控件下é¢å¯ä»¥æœ‰ä¸€ä¸ªæ˜q°æ–‡æœ?SPAN lang=EN-US>
l 下é¢çš„代ç ç‰‡æ–æ˜¯ä½¿ç”¨Section的一个例å,代ç å’?/SPAN>ExpandableComposite没有太大差别åQŒè¿™é‡Œæ˜¯ç”¨äº†TWISTIEé£Žæ ¼åQ?/SPAN>
Section section = toolkit.createSection(body, Section.DESCRIPTION
| Section.TWISTIE | Section.EXPANDED);
td = new TableWrapData(TableWrapData.FILL);
td.colspan = 2;
section.setLayoutData(td);
section.addExpansionListener(new ExpansionAdapter() {
public void expansionStateChanged(ExpansionEvent e) {
form.reflow(true);
}
});
section.setText("Section title");
toolkit.createCompositeSeparator(section);
section
.setDescription("This is the description that goes below the title");
Composite sectionClient = toolkit.createComposite(section);
sectionClient.setLayout(new GridLayout());
button = toolkit.createButton(sectionClient, "Radio 1", SWT.RADIO);
button = toolkit.createButton(sectionClient, "Radio 2", SWT.RADIO);
section.setClient(sectionClient);
l 䏋颿˜¯ä¸Šä¾‹çš„˜q行¾l“æžœåQ?/FONT>
Eclipse Formæä¾›äº?/SPAN>2个新的布局
åQ?/SPAN>1åQ?/SPAN>TableWrapLayout
l 问题åQšå¦‚果将上例ä¸è¶…链接的文本设¾|®çš„‘›_¤Ÿé•?/SPAN>
link.setText("This is an example of a form that is much longer and will need to wrap.");
å³ä‹É讄¡½®äº?/SPAN>SWT.WRAPåQŒæ–‡æœ¬å†…容ä¸ä¼šè‡ªåŠ?/SPAN>WRAPåQŒè¿™æ˜¯å› ä¸ÞZ½“内容的布局æ˜?/SPAN>GridLayout
l Eclipse Formæä¾›æ›¿ä»£çš„布局TableWrapLayoutåQšç±»ä¼égºŽGridLayoutåQŒä½†æ˜¯å…·æœ‰è±¡HTMLè¡¨æ ¼ä¸€æ ¯‚‡ªåŠ?/SPAN>WRAP功能
l 䏋颿˜¯è§£å†Œ™¶…链接文本自动WRAP的例å:
public void createPartControl(Composite parent) {
toolkit = new FormToolkit(parent.getDisplay());
form = toolkit.createScrolledForm(parent);
form.setText("Hello, Eclipse Forms");
Composite body = form.getBody();
TableWrapLayout layout = new TableWrapLayout();
body.setLayout(layout);
Hyperlink link = toolkit.createHyperlink(body, "Click here.", SWT.WRAP);
link.addHyperlinkListener(new HyperlinkAdapter() {
public void linkActivated(HyperlinkEvent e) {
System.out.println("Link activated!");
}
});
layout.numColumns = 2;
link.setText("This is an example of a form that is much longer and will need to wrap.");
TableWrapData td = new TableWrapData();
td.colspan = 2;
link.setLayoutData(td);
Label label = toolkit.createLabel(body, "Text field label:");
Text text = toolkit.createText(body, "");
td = new TableWrapData(TableWrapData.FILL_GRAB);
text.setLayoutData(td);
text.setData(FormToolkit.KEY_DRAW_BORDER, FormToolkit.TEXT_BORDER);
Button button = toolkit.createButton(body,
"An example of a checkbox in a form", SWT.CHECK);
td = new TableWrapData();
td.colspan = 2;
button.setLayoutData(td);
toolkit.paintBordersFor(body);
}
l 䏋颿˜¯ç¨‹åºå˜åŒ–的地方åQ?/SPAN>
n TableWrapLayout替代GridLayout
n 使用TableWrapDataæ¥æä¾›å¸ƒå±€æ•°æ®ä¿¡æ¯
n 讄¡½®çš„属性ä‹Éç”?/SPAN>colspanã€?/SPAN>rowspan½{‰æ¥æºäºŽHTMLè¡¨æ ¼å•元的属æ€?/SPAN>
l è¦æ³¨æ„的是:需è¦è‡ªåŠ?SPAN lang=EN-US style="COLOR: black">WRAP的控ä»Óž¼Œéœ€è¦è®¾¾|®æˆSWT.WRAPé£Žæ ¼
åQ?SPAN lang=EN-US>2åQ?/SPAN>ColumnLayout
l ColumnLayoutæ˜?/SPAN>Eclipse Formæä¾›çš„å¦ä¸€ä¸ªå®šåˆ¶å¸ƒå±€
l ColumnLayoutçš„å¸ƒå±€æ–¹å¼æ˜¯ä»Žä¸Šåˆ°ä¸‹ï¼Œä»Žå·¦åˆ°å³
l 在å˜åŒ?/SPAN>Form的宽度时åQŒä¼šè‡ªåŠ¨è°ƒæ•´æŽ§äšg列数以适应Form的宽åº?/SPAN>
l ColumnLayout的设¾|®å¾ˆ½Ž€å•,通常åªè¦è®„¡½®åˆ—数的范å›ß_¼ˆ¾~ºçœæ˜?/SPAN>1-3åQ?/SPAN>
l 在åŽé¢çš„相关部分会给å‡ÞZ‹É用的例å