mirror of
https://github.com/eclipse-cdt/cdt
synced 2025-07-13 12:05:21 +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;
|
package org.eclipse.tools.templates.ui;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
import java.util.Collection;
|
||||||
import java.util.HashSet;
|
import java.util.HashSet;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
|
||||||
import org.eclipse.core.runtime.CoreException;
|
import org.eclipse.core.runtime.CoreException;
|
||||||
import org.eclipse.jface.viewers.ISelectionChangedListener;
|
import org.eclipse.jface.viewers.ISelectionChangedListener;
|
||||||
import org.eclipse.jface.viewers.ListViewer;
|
|
||||||
import org.eclipse.jface.viewers.SelectionChangedEvent;
|
import org.eclipse.jface.viewers.SelectionChangedEvent;
|
||||||
import org.eclipse.jface.wizard.IWizardPage;
|
import org.eclipse.jface.wizard.IWizardPage;
|
||||||
import org.eclipse.jface.wizard.WizardPage;
|
import org.eclipse.jface.wizard.WizardPage;
|
||||||
|
@ -33,13 +33,24 @@ import org.eclipse.tools.templates.ui.internal.TemplateTable;
|
||||||
public class TemplateSelectionPage extends WizardPage {
|
public class TemplateSelectionPage extends WizardPage {
|
||||||
|
|
||||||
private final String[] requestedTags;
|
private final String[] requestedTags;
|
||||||
|
private final List<Template> templates;
|
||||||
|
|
||||||
private ListViewer tagList;
|
private TagListViewer tagList;
|
||||||
private TemplateTable templateTable;
|
private TemplateTable templateTable;
|
||||||
|
|
||||||
public TemplateSelectionPage(String pageName, String... tags) {
|
public TemplateSelectionPage(String pageName, String... tags) {
|
||||||
super(pageName);
|
super(pageName);
|
||||||
this.requestedTags = tags;
|
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
|
@Override
|
||||||
|
@ -51,6 +62,18 @@ public class TemplateSelectionPage extends WizardPage {
|
||||||
tagList.addSelectionChangedListener(new ISelectionChangedListener() {
|
tagList.addSelectionChangedListener(new ISelectionChangedListener() {
|
||||||
@Override
|
@Override
|
||||||
public void selectionChanged(SelectionChangedEvent event) {
|
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<>();
|
Set<Tag> tags = new HashSet<>();
|
||||||
for (Template template : templates) {
|
for (Template template : templates) {
|
||||||
tags.addAll(template.getTags());
|
tags.addAll(template.getTags());
|
||||||
|
@ -87,7 +99,7 @@ public class TemplateSelectionPage extends WizardPage {
|
||||||
|
|
||||||
templateTable.setTemplates(templates);
|
templateTable.setTemplates(templates);
|
||||||
tagList.setInput(tags);
|
tagList.setInput(tags);
|
||||||
tagList.getList().select(0);
|
tagList.getList().select(0); // All
|
||||||
|
|
||||||
form.setWeights(new int[] { 20, 80 });
|
form.setWeights(new int[] { 20, 80 });
|
||||||
}
|
}
|
||||||
|
|
|
@ -7,9 +7,12 @@
|
||||||
*******************************************************************************/
|
*******************************************************************************/
|
||||||
package org.eclipse.tools.templates.ui.internal;
|
package org.eclipse.tools.templates.ui.internal;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
import java.util.Comparator;
|
import java.util.Comparator;
|
||||||
|
import java.util.Iterator;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
import org.eclipse.jface.viewers.IStructuredContentProvider;
|
import org.eclipse.jface.viewers.IStructuredContentProvider;
|
||||||
import org.eclipse.jface.viewers.LabelProvider;
|
import org.eclipse.jface.viewers.LabelProvider;
|
||||||
|
@ -19,6 +22,8 @@ import org.eclipse.swt.widgets.Composite;
|
||||||
|
|
||||||
public class TagListViewer extends ListViewer {
|
public class TagListViewer extends ListViewer {
|
||||||
|
|
||||||
|
private Tag[] tags;
|
||||||
|
|
||||||
public TagListViewer(Composite parent, int style) {
|
public TagListViewer(Composite parent, int style) {
|
||||||
super(parent, style);
|
super(parent, style);
|
||||||
|
|
||||||
|
@ -34,8 +39,6 @@ public class TagListViewer extends ListViewer {
|
||||||
});
|
});
|
||||||
|
|
||||||
setContentProvider(new IStructuredContentProvider() {
|
setContentProvider(new IStructuredContentProvider() {
|
||||||
private Tag[] tags;
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
|
public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
|
||||||
if (newInput != null) {
|
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) {
|
public boolean hasTag(String tagId) {
|
||||||
|
if (tagId.equals(Tag.ALL_ID)) {
|
||||||
|
// All means all
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
initTags();
|
initTags();
|
||||||
return tags.containsKey(tagId);
|
return tags.containsKey(tagId);
|
||||||
}
|
}
|
||||||
|
|
|
@ -49,7 +49,7 @@ public class TemplateTable implements Listener {
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setTemplates(Collection<Template> templates) {
|
public void setTemplates(Collection<Template> templates) {
|
||||||
table.clearAll();
|
table.removeAll();
|
||||||
for (Template template : templates) {
|
for (Template template : templates) {
|
||||||
TableItem item = new TableItem(table, SWT.NONE);
|
TableItem item = new TableItem(table, SWT.NONE);
|
||||||
item.setData(template);
|
item.setData(template);
|
||||||
|
|
Loading…
Add table
Reference in a new issue