1 11 package org.eclipse.team.internal.ccvs.ui.wizards; 12 13 import org.eclipse.jface.dialogs.Dialog; 14 import org.eclipse.jface.dialogs.IDialogConstants; 15 import org.eclipse.jface.resource.ImageDescriptor; 16 import org.eclipse.jface.viewers.*; 17 import org.eclipse.swt.SWT; 18 import org.eclipse.swt.events.*; 19 import org.eclipse.swt.layout.GridData; 20 import org.eclipse.swt.widgets.*; 21 import org.eclipse.team.internal.ccvs.core.*; 22 import org.eclipse.team.internal.ccvs.ui.*; 23 import org.eclipse.team.internal.ccvs.ui.Policy; 24 import org.eclipse.team.internal.ccvs.ui.merge.ProjectElement; 25 import org.eclipse.team.internal.ccvs.ui.merge.TagElement; 26 import org.eclipse.team.internal.ccvs.ui.merge.ProjectElement.ProjectElementSorter; 27 import org.eclipse.team.internal.ccvs.ui.repo.RepositorySorter; 28 import org.eclipse.ui.help.WorkbenchHelp; 29 import org.eclipse.ui.model.WorkbenchContentProvider; 30 import org.eclipse.ui.model.WorkbenchLabelProvider; 31 32 36 public class TagSelectionWizardPage extends CVSWizardPage { 37 38 private TreeViewer tagTree; 39 private ICVSFolder[] remoteFolders; 40 private CVSTag selectedTag; 41 42 private Composite composite; 44 private Control buttons; 45 46 private String label; 47 private int includeFlags; 48 49 boolean allowNoTag = false; 51 private Button useResourceTagButton; 52 private Button selectTagButton; 53 private boolean useResourceTag = false; 54 private String helpContextId; 55 56 public TagSelectionWizardPage(String pageName, String title, ImageDescriptor titleImage, String description, String label, int includeFlags) { 57 super(pageName, title, titleImage, description); 58 this.label = label; 59 this.includeFlags = includeFlags; 60 } 61 62 public void setHelpContxtId(String helpContextId) { 63 this.helpContextId = helpContextId; 64 } 65 66 69 public void createControl(Composite parent) { 70 composite = createComposite(parent, 1); 71 setControl(composite); 72 73 if (helpContextId != null) 75 WorkbenchHelp.setHelp(composite, helpContextId); 76 77 if (allowNoTag) { 78 SelectionListener listener = new SelectionAdapter() { 79 public void widgetSelected(SelectionEvent e) { 80 useResourceTag = useResourceTagButton.getSelection(); 81 updateEnablement(); 82 } 83 }; 84 useResourceTag = true; 85 useResourceTagButton = createRadioButton(composite, Policy.bind("TagSelectionWizardPage.0"), 1); selectTagButton = createRadioButton(composite, Policy.bind("TagSelectionWizardPage.1"), 1); useResourceTagButton.setSelection(useResourceTag); 88 selectTagButton.setSelection(!useResourceTag); 89 useResourceTagButton.addSelectionListener(listener); 90 selectTagButton.addSelectionListener(listener); 91 } else if (label != null) { 92 createWrappingLabel(composite, label, 0); 93 } 94 95 tagTree = createTree(composite); 96 tagTree.setSorter(new ProjectElementSorter()); 97 setInput(); 98 99 Dialog.applyDialogFont(parent); 100 } 101 102 private void setInput() { 103 if (remoteFolders != null 104 && remoteFolders.length > 0 105 && tagTree != null 106 && !tagTree.getControl().isDisposed()) { 107 tagTree.setInput(new ProjectElement(remoteFolders[0], includeFlags)); 108 try { 109 selectedTag = remoteFolders[0].getFolderSyncInfo().getTag(); 110 } catch (CVSException e) { 111 CVSUIPlugin.log(e); 112 } 113 if (selectedTag == null) { 114 selectedTag = CVSTag.DEFAULT; 115 } 116 tagTree.expandToLevel(2); 118 tagTree.collapseAll(); 119 tagTree.reveal(new TagElement(selectedTag)); 121 tagTree.setSelection(new StructuredSelection(new TagElement(selectedTag))); 122 if (buttons != null) { 123 buttons.dispose(); 124 buttons = null; 125 } 126 Runnable refresh = new Runnable () { 127 public void run() { 128 getShell().getDisplay().syncExec(new Runnable () { 129 public void run() { 130 tagTree.refresh(); 131 } 132 }); 133 } 134 }; 135 buttons = TagConfigurationDialog.createTagDefinitionButtons(getShell(), composite, remoteFolders, 136 convertVerticalDLUsToPixels(IDialogConstants.BUTTON_HEIGHT), 137 convertHorizontalDLUsToPixels(IDialogConstants.BUTTON_WIDTH), 138 refresh, refresh); 139 composite.layout(); 140 } 141 } 142 143 private TreeViewer createTree(Composite parent) { 144 Tree tree = new Tree(parent, SWT.SINGLE | SWT.BORDER); 145 GridData gridData = new GridData(GridData.FILL_BOTH); 146 tree.setLayoutData(gridData); 147 gridData.heightHint = 150; 148 TreeViewer result = new TreeViewer(tree); 149 result.setContentProvider(new WorkbenchContentProvider()); 150 result.setLabelProvider(new WorkbenchLabelProvider()); 151 result.addSelectionChangedListener(new ISelectionChangedListener() { 152 public void selectionChanged(SelectionChangedEvent event) { 153 IStructuredSelection selection = (IStructuredSelection)event.getSelection(); 154 if (selection.isEmpty() || !(selection.getFirstElement() instanceof TagElement)) { 155 selectedTag = null; 156 } else { 157 selectedTag = ((TagElement)selection.getFirstElement()).getTag(); 158 } 159 updateEnablement(); 160 } 161 }); 162 result.getTree().addMouseListener(new MouseAdapter() { 163 public void mouseDoubleClick(MouseEvent e) { 164 IStructuredSelection selection = (IStructuredSelection)tagTree.getSelection(); 165 if (!selection.isEmpty() && (selection.getFirstElement() instanceof TagElement)) { 166 gotoNextPage(); 167 } 168 } 169 }); 170 result.setSorter(new RepositorySorter()); 171 172 return result; 173 } 174 175 private void updateEnablement() { 176 tagTree.getControl().setEnabled(!useResourceTag); 177 setPageComplete(useResourceTag || selectedTag != null); 178 } 179 180 public ICVSFolder getFolder() { 181 return remoteFolders[0]; 182 } 183 184 public void setFolder(ICVSFolder remote) { 185 setFolders(new ICVSFolder[] { remote }); 186 } 187 188 public CVSTag getSelectedTag() { 189 if (useResourceTag) 190 return null; 191 return selectedTag; 192 } 193 194 protected void gotoNextPage() { 195 TagSelectionWizardPage.this.getContainer().showPage(getNextPage()); 196 } 197 198 public void setFolders(ICVSFolder[] remoteFolders) { 199 this.remoteFolders = remoteFolders; 200 setInput(); 201 } 202 203 public void setAllowNoTag(boolean b) { 204 allowNoTag = b; 205 } 206 } 207 | Popular Tags |