package com.hundsun.ares.studio.ui.editor.wizard; import java.util.ArrayList; import java.util.List; import org.apache.commons.lang.StringUtils; import org.eclipse.jface.layout.GridDataFactory; import org.eclipse.jface.layout.GridLayoutFactory; import org.eclipse.jface.viewers.CheckStateChangedEvent; import org.eclipse.jface.viewers.ICheckStateListener; import org.eclipse.jface.viewers.Viewer; import org.eclipse.jface.viewers.ViewerFilter; import org.eclipse.jface.wizard.WizardPage; import org.eclipse.swt.SWT; import org.eclipse.swt.custom.SashForm; import org.eclipse.swt.widgets.Composite; import org.eclipse.ui.forms.widgets.FormToolkit; import com.hundsun.ares.studio.core.ARESModelException; import com.hundsun.ares.studio.core.IARESModule; import com.hundsun.ares.studio.core.IARESModuleRoot; import com.hundsun.ares.studio.core.IARESProject; import com.hundsun.ares.studio.core.IARESResource; import com.hundsun.ares.studio.core.model.RevisionHistory; import com.hundsun.ares.studio.ui.ARESElementSorter; import com.hundsun.ares.studio.ui.ARESResourceCategory; import com.hundsun.ares.studio.ui.CommonElementContentProvider; import com.hundsun.ares.studio.ui.CommonElementLabelProvider; import com.hundsun.ares.studio.ui.control.CheckboxTreeViewerEx; import com.hundsun.ares.studio.ui.editor.blocks.BatchAddModifyLogBlock; public class BatchAddModifyLogPage extends WizardPage { private CheckboxTreeViewerEx selectViewer; IARESProject project; List<RevisionHistory>viewerInput = new ArrayList<RevisionHistory>(); List<Object>resources = new ArrayList<Object>(); protected BatchAddModifyLogPage(String pageName,IARESProject project) { super(pageName); this.project = project; } @Override public void createControl(Composite parent) { SashForm client = new SashForm(parent, SWT.VERTICAL); FormToolkit toolkit = new FormToolkit(client.getDisplay()); Composite top = toolkit.createComposite(client,SWT.BORDER); BatchAddModifyLogBlock block = new BatchAddModifyLogBlock(); block.setProject(project); block.createControl(top, toolkit); block.setInput(viewerInput); selectViewer = new CheckboxTreeViewerEx(client); CommonElementContentProvider cp = new CommonElementContentProvider(); selectViewer.setContentProvider(cp); selectViewer.setLabelProvider(new CommonElementLabelProvider(cp)); selectViewer.setInput(project); selectViewer.setFilters(new ViewerFilter[] { new ModifyLogFilter() }); selectViewer.setSorter(new ARESElementSorter()); //���� GridLayoutFactory.swtDefaults().numColumns(1).applyTo(client); GridLayoutFactory.swtDefaults().numColumns(2).applyTo(top); GridDataFactory.swtDefaults().align(SWT.LEFT, SWT.TOP).grab(false, true).span(1, 1).applyTo(top); GridDataFactory.fillDefaults().grab(true, true).applyTo(block.getControl()); GridDataFactory.fillDefaults().align(SWT.LEFT, SWT.TOP).grab(false, false).span(2, 1).applyTo(selectViewer.getControl()); setControl(client); setTitle("��������޸ļ�¼"); setDescription("ѡ����Ҫ����޸ļ�¼����ԴȻ�����"); selectViewer.addCheckStateListener(new ICheckStateListener() { @Override public void checkStateChanged(CheckStateChangedEvent event) { refreshFinishState(); } }); refreshFinishState(); } protected void refreshFinishState() { resources.clear(); Object[] selections = selectViewer.getCheckedElements(); for(Object sel : selections){ if(sel instanceof IARESModule){ IARESModule tModule = (IARESModule)sel; try { if(tModule.getSubModules().length == 0){ resources.add(tModule); } } catch (ARESModelException e) { e.printStackTrace(); } } if(sel instanceof IARESResource){ resources.add((IARESResource) sel); } } if(resources.size()>0){ setPageComplete(true); }else{ setPageComplete(false); } } public List<RevisionHistory> getViewerInput() { return viewerInput; } public List<Object> getSelection() { return resources; } class ModifyLogFilter extends ViewerFilter{ @Override public boolean select(Viewer viewer, Object parentElement,Object element) { if(element instanceof IARESModuleRoot){ String type = ((IARESModuleRoot) element).getType(); if(StringUtils.equals(type, "com.hundsun.ares.studio.jres.moduleroot.tools") || StringUtils.equals(type, "com.hundsun.ares.studio.jres.others")){ return false; } return true; }else if(element instanceof IARESModule){ return true; }else if(element instanceof ARESResourceCategory){ return false; } else if(element instanceof IARESResource){ IARESResource res = ((IARESResource) element); //Ԫ������Դ if(res.getModule().getElementName().equals(IARESModule.DEFAULT_MODULE_NAME)){ return true; } } return false; } } }