/** * <p>Copyright: Copyright 2010</p> * <p>Company: �������ӹɷ����޹�˾</p> */ package com.hundsun.ares.studio.ui.page.masterdetail; import org.eclipse.jface.viewers.ISelectionChangedListener; import org.eclipse.jface.viewers.SelectionChangedEvent; import org.eclipse.jface.viewers.Viewer; import org.eclipse.swt.SWT; import org.eclipse.swt.graphics.Image; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.widgets.Composite; import org.eclipse.ui.forms.DetailsPart; import org.eclipse.ui.forms.IDetailsPage; import org.eclipse.ui.forms.IManagedForm; import org.eclipse.ui.forms.MasterDetailsBlock; import org.eclipse.ui.forms.SectionPart; import org.eclipse.ui.forms.widgets.FormToolkit; import org.eclipse.ui.forms.widgets.Section; import com.hundsun.ares.studio.core.util.StringUtil; import com.hundsun.ares.studio.ui.page.FromPageWithMyDirtySystem; public abstract class AresBasicMasterDetailsBlock extends MasterDetailsBlock { protected FromPageWithMyDirtySystem page; protected Viewer viewer; public AresBasicMasterDetailsBlock(FromPageWithMyDirtySystem page) { this.page = page; } @Override protected void createMasterPart(final IManagedForm managedForm, Composite parent) { FormToolkit toolkit = managedForm.getToolkit(); Section section = toolkit.createSection(parent, Section.TITLE_BAR); section.setText(StringUtil.getStringSafely(getSectionName())); Composite client = toolkit.createComposite(section, SWT.WRAP); client.setLayout(new GridLayout()); toolkit.createLabel(client, StringUtil.getStringSafely(getDescription())); final SectionPart sPart = new SectionPart(section); managedForm.addPart(sPart); viewer = createViewer(client,managedForm,page); viewer.getControl().setLayoutData(new GridData(GridData.FILL_BOTH)); viewer.addSelectionChangedListener(new ISelectionChangedListener(){ public void selectionChanged(SelectionChangedEvent event) { managedForm.fireSelectionChanged(sPart, event.getSelection()); viewer.refresh(); } }); section.setClient(client); } @Override protected void registerPages(DetailsPart detailsPart) { for(Object type:getElementTypes()){ IDetailsPage page = getDetailPage(type); if(this.page != null && page != null){ if(page instanceof AresDetailsPage){ ((AresDetailsPage)page).setPage(this.page); } detailsPart.registerPage(type, page); } } } @Override public void createContent(IManagedForm managedForm) { super.createContent(managedForm); // ScrolledForm form = managedForm.getForm(); // managedForm.getToolkit().decorateFormHeading(form.getForm()); // form.setText(getPageHeadName()); // form.setImage(getPageHeadImage()); // managedForm.getForm().getBody().setLayout(FormLayoutFactory.createFormGridLayout(false, 1)); } /** * ��ȡҳ��ı���ͼƬ * @return */ protected Image getPageHeadImage(){ return null; } /** * ��ȡҳ��ı��� * @return */ protected abstract String getPageHeadName(); /** * ��ȡ���section�ı��� * @return */ protected abstract String getSectionName(); /** * ��ȡ���section������ * @return */ protected abstract String getDescription(); /** * ��ȡ������Ҫ����detialҳ������� * @return */ protected abstract Object[] getElementTypes(); /** * ��ȡij���ض����͵�detialҳ�� * @param type * @return */ protected abstract IDetailsPage getDetailPage(Object type); /** * ��ȡ�ұߵ���ͼ * @param client * @param managedForm * @param page * @return */ protected abstract Viewer createViewer(Composite client,final IManagedForm managedForm,FromPageWithMyDirtySystem page); }