@Override public Template getTemplate() { return ref.getTemplate(); }
@Override public Object getParent(TreeListDialogField<String> field, Object element) { if (element instanceof TemplatePersistenceData) { TemplatePersistenceData data= (TemplatePersistenceData) element; if (data.getTemplate().getName().endsWith(CodeTemplateContextType.COMMENT_SUFFIX)) { return COMMENT_NODE; } return CODE_NODE; } return null; }
private static TemplatePersistenceData findSimilarTemplate(TemplatePersistenceData[] datas, Template template, boolean isCodeTemplates) { for (int i= 0; i < datas.length; i++) { TemplatePersistenceData data= datas[i]; Template orig= data.getTemplate(); if (isSimilar(template, orig, isCodeTemplates)) return data; } return null; }
protected TemplatePersistenceData[] getTemplateOfCategory(boolean isComment) { ArrayList<TemplatePersistenceData> res= new ArrayList<>(); TemplatePersistenceData[] templates= fTemplateStore.getTemplateData(); for (int i= 0; i < templates.length; i++) { TemplatePersistenceData curr= templates[i]; if (isComment == curr.getTemplate().getName().endsWith(CodeTemplateContextType.COMMENT_SUFFIX)) { res.add(curr); } } return res.toArray(new TemplatePersistenceData[res.size()]); }
/** * Returns all enabled templates for the given context type. * * @param contextTypeId the id of the context type of the requested templates, or <code>null</code> if all templates should be returned * @return all enabled templates for the given context type */ public Template[] getTemplates(String contextTypeId) { List<Template> templates= new ArrayList<>(); for (TemplatePersistenceData data : fTemplates) { if (data.isEnabled() && !data.isDeleted() && (contextTypeId == null || contextTypeId.equals(data.getTemplate().getContextTypeId()))) templates.add(data.getTemplate()); } return templates.toArray(new Template[templates.size()]); }
/** * In some cases, we must continue to respect the deprecated TemplatePresistenceData * even though we are given {@link org.eclipse.text.templates.TemplatePersistenceData}. * * @param data The {@link org.eclipse.text.templates.TemplatePersistenceData} that will * underlie this object. * @since 3.14 */ public TemplatePersistenceData(org.eclipse.text.templates.TemplatePersistenceData data) { super(data.getTemplate(), data.isEnabled(), data.getId()); // these are ignored this.ref= data instanceof TemplatePersistenceData ? ((TemplatePersistenceData) data).ref : data; // no double wrapping }
/** * Returns the first enabled template that matches the given template id. * * @param id the id of the template searched for * @return the first enabled template that matches id, or <code>null</code> if none is found * @since 3.1 */ public Template findTemplateById(String id) { TemplatePersistenceData data= getTemplateData(id); if (data != null && !data.isDeleted()) return data.getTemplate(); return null; }
/** * Returns the first enabled template that matches both name and context type id. * * @param name the name of the template searched for * @param contextTypeId the context type id to clip unwanted templates, or <code>null</code> if any context type is OK * @return the first enabled template that matches both name and context type id, or <code>null</code> if none is found */ public Template findTemplate(String name, String contextTypeId) { Assert.isNotNull(name); for (TemplatePersistenceData data : fTemplates) { Template template= data.getTemplate(); if (data.isEnabled() && !data.isDeleted() && (contextTypeId == null || contextTypeId.equals(template.getContextTypeId())) && name.equals(template.getName())) return template; } return null; }
private void updateTemplate(TemplatePersistenceData data) { TemplatePersistenceData[] datas= fTemplateStore.getTemplateData(); for (int i= 0; i < datas.length; i++) { String id= datas[i].getId(); if (id != null && id.equals(data.getId())) { datas[i].setTemplate(data.getTemplate()); break; } } }
/** * Adds a template encapsulated in its persistent form. * * @param data the template to add */ public void add(TemplatePersistenceData data) { if (!validateTemplate(data.getTemplate())) return; if (data.isUserAdded()) { fTemplates.add(data); } else { for (TemplatePersistenceData persistenceData : fTemplates) { if (persistenceData.getId() != null && persistenceData.getId().equals(data.getId())) { persistenceData.setTemplate(data.getTemplate()); persistenceData.setDeleted(data.isDeleted()); persistenceData.setEnabled(data.isEnabled()); return; } } // add an id which is not contributed as add-on if (data.getTemplate() != null) { TemplatePersistenceData newData= new TemplatePersistenceData(data.getTemplate(), data.isEnabled(), data.getId()); fTemplates.add(newData); } } }
protected void updateSourceViewerInput(List<Object> selection) { if (fPatternViewer == null || fPatternViewer.getTextWidget().isDisposed()) { return; } if (selection.size() == 1 && selection.get(0) instanceof TemplatePersistenceData) { TemplatePersistenceData data= (TemplatePersistenceData) selection.get(0); Template template= data.getTemplate(); TemplateContextType type= JavaPlugin.getDefault().getCodeTemplateContextRegistry().getContextType(template.getContextTypeId()); fTemplateProcessor.setContextType(type); fPatternViewer.getDocument().set(template.getPattern()); } else { fPatternViewer.getDocument().set(""); //$NON-NLS-1$ } }
@Override public void load() throws IOException { super.load(); if (fLegacySet != null) { List<Template> legacyTemplates= new ArrayList<>(Arrays.asList(fLegacySet.getTemplates())); fLegacySet.clear(); TemplatePersistenceData[] datas= getTemplateData(true); for (Iterator<Template> it= legacyTemplates.listIterator(); it.hasNext();) { Template t= it.next(); TemplatePersistenceData orig= findSimilarTemplate(datas, t, isCodeTemplates()); if (orig == null) { // no contributed match for the old template found if (!isCodeTemplates()) add(new TemplatePersistenceData(t, true)); } else { // a contributed template seems to be the descendant of the non-id template t if (!orig.getTemplate().getPattern().equals(t.getPattern())) // add as modified contributed template if changed compared to the original orig.setTemplate(t); } } save(); fLegacySet= null; } }
public void load() throws IOException { if (fProjectStore != null) { fProjectStore.load(); Set<String> datas= new HashSet<>(); TemplatePersistenceData[] data= fProjectStore.getTemplateData(false); for (int i= 0; i < data.length; i++) { datas.add(data[i].getId()); } data= fInstanceStore.getTemplateData(false); for (int i= 0; i < data.length; i++) { TemplatePersistenceData orig= data[i]; if (!datas.contains(orig.getId())) { TemplatePersistenceData copy= new TemplatePersistenceData(new Template(orig.getTemplate()), orig.isEnabled(), orig.getId()); fProjectStore.add(copy); copy.setDeleted(true); } } } }
if (data.isUserAdded()) { TemplatePersistenceData similar= findSimilarTemplate(datas, data.getTemplate(), isCodeTemplates); if (similar != data && !similar.isUserAdded()) { similar.setTemplate(data.getTemplate()); store.delete(data);
/** * Only to be used by tests * * @param templateId the template id * @param pattern the new pattern * @param project not used */ public static void setCodeTemplate(String templateId, String pattern, IJavaProject project) { TemplateStoreCore codeTemplateStore= JavaManipulation.getCodeTemplateStore(); TemplatePersistenceData data= codeTemplateStore.getTemplateData(templateId); Template orig= data.getTemplate(); Template copy= new Template(orig.getName(), orig.getDescription(), orig.getContextTypeId(), pattern, true); data.setTemplate(copy); }
/** * Updates the pattern viewer. */ protected void updateViewerInput() { IStructuredSelection selection = fTableViewer.getStructuredSelection(); if (selection.size() == 1) { TemplatePersistenceData data= (TemplatePersistenceData) selection.getFirstElement(); Template template= data.getTemplate(); fPatternViewer.getDocument().set(template.getPattern()); } else { fPatternViewer.getDocument().set(""); //$NON-NLS-1$ } }
@Override public String getColumnText(Object element, int columnIndex) { TemplatePersistenceData data = (TemplatePersistenceData) element; Template template= data.getTemplate(); switch (columnIndex) { case 0: return template.getName(); case 1: TemplateContextType type= fContextTypeRegistry.getContextType(template.getContextTypeId()); if (type != null) return type.getName(); return template.getContextTypeId(); case 2: return template.getDescription(); case 3: return template.isAutoInsertable() ? TemplatesMessages.TemplatePreferencePage_on : ""; //$NON-NLS-1$ default: return ""; //$NON-NLS-1$ } } }
private void edit(TemplatePersistenceData data) { Template newTemplate= new Template(data.getTemplate()); EditTemplateDialog dialog= new EditTemplateDialog(getShell(), newTemplate, true, false, JavaPlugin.getDefault().getCodeTemplateContextRegistry()); if (dialog.open() == Window.OK) { // changed data.setTemplate(dialog.getTemplate()); fCodeTemplateTree.refresh(data); fCodeTemplateTree.selectElements(new StructuredSelection(data)); } }
@Override protected void updateViewerInput() { IStructuredSelection selection= (IStructuredSelection) getTableViewer().getSelection(); SourceViewer viewer= getViewer(); if (selection.size() == 1 && selection.getFirstElement() instanceof TemplatePersistenceData) { TemplatePersistenceData data= (TemplatePersistenceData) selection.getFirstElement(); Template template= data.getTemplate(); String contextId= template.getContextTypeId(); TemplateContextType type= JavaPlugin.getDefault().getTemplateContextRegistry().getContextType(contextId); fTemplateProcessor.setContextType(type); IDocument doc= viewer.getDocument(); String start= null; if ("javadoc".equals(contextId)) { //$NON-NLS-1$ start= "/**" + doc.getLegalLineDelimiters()[0]; //$NON-NLS-1$ } else start= ""; //$NON-NLS-1$ doc.set(start + template.getPattern()); int startLen= start.length(); viewer.setDocument(doc, startLen, doc.getLength() - startLen); } else { viewer.getDocument().set(""); //$NON-NLS-1$ } } }
private void edit(TemplatePersistenceData data) { Template oldTemplate= data.getTemplate(); Template newTemplate= editTemplate(new Template(oldTemplate), true, true); if (newTemplate != null) { if (!newTemplate.getName().equals(oldTemplate.getName()) && MessageDialog.openQuestion(getShell(), TemplatesMessages.TemplatePreferencePage_question_create_new_title, TemplatesMessages.TemplatePreferencePage_question_create_new_message)) { data= new TemplatePersistenceData(newTemplate, true); fTemplateStore.add(data); fTableViewer.refresh(); } else { data.setTemplate(newTemplate); fTableViewer.refresh(data); } selectionChanged1(); fTableViewer.setChecked(data, data.isEnabled()); fTableViewer.setSelection(new StructuredSelection(data)); } }