1
0
Fork 0
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:
Doug Schaefer 2016-07-19 16:48:57 -04:00
parent 587cb567e9
commit 370fd2ecf2
4 changed files with 48 additions and 17 deletions

View file

@ -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 });
}

View file

@ -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;
}
}

View file

@ -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);
}

View file

@ -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);