mirror of
https://github.com/eclipse-cdt/cdt
synced 2025-07-01 06:05:24 +02:00
Fix Tag selection in the selection page.
Change-Id: Ib8c67d1bddd6c4a963ccc0f89b46218ecc18173b
This commit is contained in:
parent
587cb567e9
commit
370fd2ecf2
4 changed files with 48 additions and 17 deletions
|
@ -8,13 +8,13 @@
|
|||
package org.eclipse.tools.templates.ui;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
|
||||
import org.eclipse.core.runtime.CoreException;
|
||||
import org.eclipse.jface.viewers.ISelectionChangedListener;
|
||||
import org.eclipse.jface.viewers.ListViewer;
|
||||
import org.eclipse.jface.viewers.SelectionChangedEvent;
|
||||
import org.eclipse.jface.wizard.IWizardPage;
|
||||
import org.eclipse.jface.wizard.WizardPage;
|
||||
|
@ -33,13 +33,24 @@ import org.eclipse.tools.templates.ui.internal.TemplateTable;
|
|||
public class TemplateSelectionPage extends WizardPage {
|
||||
|
||||
private final String[] requestedTags;
|
||||
private final List<Template> templates;
|
||||
|
||||
private ListViewer tagList;
|
||||
private TagListViewer tagList;
|
||||
private TemplateTable templateTable;
|
||||
|
||||
public TemplateSelectionPage(String pageName, String... tags) {
|
||||
super(pageName);
|
||||
this.requestedTags = tags;
|
||||
TemplateExtension templateExtension = Activator.getTemplateExtension();
|
||||
templates = new ArrayList<>();
|
||||
for (Template template : templateExtension.getTemplates()) {
|
||||
for (String requestedTag : requestedTags) {
|
||||
if (template.hasTag(requestedTag)) {
|
||||
templates.add(template);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -51,6 +62,18 @@ public class TemplateSelectionPage extends WizardPage {
|
|||
tagList.addSelectionChangedListener(new ISelectionChangedListener() {
|
||||
@Override
|
||||
public void selectionChanged(SelectionChangedEvent event) {
|
||||
Collection<Tag> selectedTags = tagList.getSelectedTags();
|
||||
List<Template> selectedTemplates = new ArrayList<>();
|
||||
for (Template template : templates) {
|
||||
for (Tag tag : selectedTags) {
|
||||
if (template.hasTag(tag.getId())) {
|
||||
selectedTemplates.add(template);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
templateTable.setTemplates(selectedTemplates);
|
||||
}
|
||||
});
|
||||
|
||||
|
@ -69,17 +92,6 @@ public class TemplateSelectionPage extends WizardPage {
|
|||
}
|
||||
});
|
||||
|
||||
TemplateExtension templateExtension = Activator.getTemplateExtension();
|
||||
List<Template> templates = new ArrayList<>();
|
||||
for (Template template : templateExtension.getTemplates()) {
|
||||
for (String requestedTag : requestedTags) {
|
||||
if (template.hasTag(requestedTag)) {
|
||||
templates.add(template);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Set<Tag> tags = new HashSet<>();
|
||||
for (Template template : templates) {
|
||||
tags.addAll(template.getTags());
|
||||
|
@ -87,7 +99,7 @@ public class TemplateSelectionPage extends WizardPage {
|
|||
|
||||
templateTable.setTemplates(templates);
|
||||
tagList.setInput(tags);
|
||||
tagList.getList().select(0);
|
||||
tagList.getList().select(0); // All
|
||||
|
||||
form.setWeights(new int[] { 20, 80 });
|
||||
}
|
||||
|
|
|
@ -7,9 +7,12 @@
|
|||
*******************************************************************************/
|
||||
package org.eclipse.tools.templates.ui.internal;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.Collection;
|
||||
import java.util.Comparator;
|
||||
import java.util.Iterator;
|
||||
import java.util.List;
|
||||
|
||||
import org.eclipse.jface.viewers.IStructuredContentProvider;
|
||||
import org.eclipse.jface.viewers.LabelProvider;
|
||||
|
@ -19,6 +22,8 @@ import org.eclipse.swt.widgets.Composite;
|
|||
|
||||
public class TagListViewer extends ListViewer {
|
||||
|
||||
private Tag[] tags;
|
||||
|
||||
public TagListViewer(Composite parent, int style) {
|
||||
super(parent, style);
|
||||
|
||||
|
@ -34,8 +39,6 @@ public class TagListViewer extends ListViewer {
|
|||
});
|
||||
|
||||
setContentProvider(new IStructuredContentProvider() {
|
||||
private Tag[] tags;
|
||||
|
||||
@Override
|
||||
public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
|
||||
if (newInput != null) {
|
||||
|
@ -69,4 +72,15 @@ public class TagListViewer extends ListViewer {
|
|||
});
|
||||
}
|
||||
|
||||
public Collection<Tag> getSelectedTags() {
|
||||
List<Tag> selectedTags = new ArrayList<>();
|
||||
Iterator<Object> i = getStructuredSelection().iterator();
|
||||
while (i.hasNext()) {
|
||||
Tag tag = (Tag) i.next();
|
||||
selectedTags.add(tag);
|
||||
}
|
||||
|
||||
return selectedTags;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -65,6 +65,11 @@ public class Template {
|
|||
}
|
||||
|
||||
public boolean hasTag(String tagId) {
|
||||
if (tagId.equals(Tag.ALL_ID)) {
|
||||
// All means all
|
||||
return true;
|
||||
}
|
||||
|
||||
initTags();
|
||||
return tags.containsKey(tagId);
|
||||
}
|
||||
|
|
|
@ -49,7 +49,7 @@ public class TemplateTable implements Listener {
|
|||
}
|
||||
|
||||
public void setTemplates(Collection<Template> templates) {
|
||||
table.clearAll();
|
||||
table.removeAll();
|
||||
for (Template template : templates) {
|
||||
TableItem item = new TableItem(table, SWT.NONE);
|
||||
item.setData(template);
|
||||
|
|
Loading…
Add table
Reference in a new issue