类org.eclipse.jface.text.templates.persistence.TemplatePersistenceData源码实例Demo

下面列出了怎么用org.eclipse.jface.text.templates.persistence.TemplatePersistenceData的API类实例代码及写法,或者点击链接到github查看源代码。

@Override
protected void updateViewerInput() {
	IStructuredSelection selection= (IStructuredSelection) getTableViewer().getSelection();
	if (selection.size() == 1) {
		TemplatePersistenceData data= (TemplatePersistenceData) selection.getFirstElement();
		Template template= data.getTemplate();
		String name = template.getName();
		TemplateContextType contextType = getContextTypeRegistry().getContextType(template.getContextTypeId());
		if (contextType != null) {
			String prefix = 
					"templates for " + grammarAccess.getGrammar().getName() +
					"'" + name + "'" + " for " + getContextTypeForGrammar(contextType) + ">>";
			String editablePart = template.getPattern();
			String suffix = "";
			partialEditor.updateModel(prefix, editablePart, suffix);
		} else {
			partialEditor.updateModel("", template.getPattern(), "");
		}
	} else {
		partialEditor.updateModel("", "", "");
	}
}
 
源代码2 项目: xtext-eclipse   文件: XtextTemplateStore.java
@Override
protected void loadContributedTemplates() throws IOException {
	if (res==null)
		return;
	TemplateReaderWriter reader = new TemplateReaderWriter();
	InputStream openStream = null;
	try {
		openStream = res.openStream();
		try {
			TemplatePersistenceData[] read = reader.read(openStream, null);
			for (TemplatePersistenceData templatePersistenceData : read) {
				internalAdd(templatePersistenceData);
			}
		} finally {
			openStream.close();
		}
	} catch (IOException e) {
		log.error(e.getMessage(), e);
	}
}
 
public void applyData(Object data) {
	if (data instanceof Map) {
		Object id = ((Map) data).get(DATA_SELECT_TEMPLATE);
		if (id instanceof String) {
			final TemplatePersistenceData[] templates = fCodeTemplateConfigurationBlock.fTemplateStore
					.getTemplateData();
			TemplatePersistenceData template = null;
			for (int index = 0; index < templates.length; index++) {
				template = templates[index];
				if (template.getId().equals(id)) {
					fCodeTemplateConfigurationBlock.postSetSelection(template);
					break;
				}
			}
		}
	}
	super.applyData(data);
}
 
源代码4 项目: gama   文件: GamlTemplateStore.java
public void directAdd(final TemplatePersistenceData data, final boolean isEdited) {
	if (isEdited) {
		add(data);
	} else {
		// Trick the template store so that (1) the template is considered
		// as "user added" while (2) maintaining a proper id
		final String id = data.getId();
		final TemplatePersistenceData d2 = new TemplatePersistenceData(data.getTemplate(), true) {

			@Override
			public String getId() {
				return id;
			}

		};
		add(d2);
	}
}
 
源代码5 项目: gama   文件: GamlEditTemplateDialog.java
public GamlEditTemplateDialog(final Shell parent, final TemplatePersistenceData data, final boolean edit,
		final ContextTypeRegistry registry, final TemplatesLanguageConfiguration configuration,
		final IEditedResourceProvider resourceProvider, final String languageName) {
	super(parent);
	this.data = data;
	this.configuration = configuration;
	this.resourceProvider = resourceProvider;
	this.languageName = languageName;

	final String title = edit ? TemplateDialogMessages.EditTemplateDialog_title_edit
			: TemplateDialogMessages.EditTemplateDialog_title_new;
	setTitle(title);

	// this.fTemplate = data.getTemplate();
	// fIsNameModifiable = isNameModifiable;

	final List<String[]> contexts = Lists.newArrayList();
	for (final Iterator<TemplateContextType> it =
			Iterators.filter(registry.contextTypes(), TemplateContextType.class); it.hasNext();) {
		final TemplateContextType type = it.next();
		contexts.add(new String[] { type.getId(), type.getName() });
	}
	// fContextTypes = contexts.toArray(new String[contexts.size()][]);
	// fContextTypeRegistry = registry;

}
 
源代码6 项目: gama   文件: TemplateReferenceMenu.java
void add(final TemplatePersistenceData t, final List<String> path) {
	if (path.size() == 0) {
		children.add(new TemplateNode(this, t, 1));
	} else if (path.size() == 1 && Strings.isGamaNumber(path.get(0))) {
		children.add(new TemplateNode(this, t, Integer.decode(path.get(0))));
	} else {
		final String name = path.remove(0);
		Node node = childWithName(name);
		if (node == null) {
			node = new TemplateTree(this, name);
			children.add(node);
		}
		((TemplateTree) node).add(t, path);
	}

}
 
/**
 * Removes any duplicates from a template store. Duplicate user added templates
 * are copied over their contributed siblings. If isCodeTemplates is true,
 * any user added templates are then removed.
 *
 * @param store
 * @param isCodeTemplates
 */
public static void pruneDuplicates(TemplateStore store, boolean isCodeTemplates) {
	TemplatePersistenceData[] datas= store.getTemplateData(true);
	for (int i= datas.length - 1; i >= 0; i--) {
		TemplatePersistenceData data= datas[i];
		if (data.isUserAdded()) {
			// find a contributed template that is similar and check it
			TemplatePersistenceData similar= findSimilarTemplate(datas, data.getTemplate(), isCodeTemplates);
			if (similar != data && !similar.isUserAdded()) {
				similar.setTemplate(data.getTemplate());
				store.delete(data);
			}
		}
	}

	if (isCodeTemplates) {
		datas= store.getTemplateData(true);
		for (int i= datas.length - 1; i >= 0; i--) {
			if (datas[i].isUserAdded())
				store.delete(datas[i]);
		}
	}
}
 
public void load() throws IOException {
	if (fProjectStore != null) {
		fProjectStore.load();

		Set<String> datas= new HashSet<String>();
		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);
			}
		}
	}
}
 
public boolean performOk(boolean enabled) {
	boolean res= super.performOk();
	if (!res)
		return false;

	if (fProject != null) {
		TemplatePersistenceData[] templateData= fTemplateStore.getTemplateData();
		for (int i= 0; i < templateData.length; i++) {
			fTemplateStore.setProjectSpecific(templateData[i].getId(), enabled);
		}
	}
	try {
		fTemplateStore.save();
	} catch (IOException e) {
		JavaPlugin.log(e);
		openWriteErrorDialog();
	}
	return true;
}
 
@Override
public void applyData(Object data) {
	if (data instanceof Map) {
		Object id= ((Map<?, ?>) data).get(DATA_SELECT_TEMPLATE);
		if (id instanceof String) {
			final TemplatePersistenceData[] templates= fCodeTemplateConfigurationBlock.fTemplateStore.getTemplateData();
			TemplatePersistenceData template= null;
			for (int index= 0; index < templates.length; index++) {
				template= templates[index];
				if (template.getId().equals(id)) {
					fCodeTemplateConfigurationBlock.postSetSelection(template);
					break;
				}
			}
		}
	}
	super.applyData(data);
}
 
源代码11 项目: Pydev   文件: TemplateSelectDialog.java
/**
 * Sets the template options in the passed list (swt)
 */
private void fillTemplateOptions(TemplatePersistenceData[] templateData, Table list) {
    nameToTemplateData = new TreeMap<String, TemplatePersistenceData>();

    for (TemplatePersistenceData data : templateData) {
        if (PyContextType.PY_MODULES_CONTEXT_TYPE.equals(data.getTemplate().getContextTypeId())) {
            String name = data.getTemplate().getName();
            nameToTemplateData.put(name, data);
        }
    }
    ArrayList<String> lst = new ArrayList<String>(nameToTemplateData.keySet());
    for (String string : lst) {
        new TableItem(list, SWT.NONE).setText(string);
    }
    list.setSelection(0);
}
 
源代码12 项目: dsl-devkit   文件: ConfigurableTemplateStore.java
/**
 * Contribute templates defined in file with the give URL.
 * 
 * @param templates
 *          the URL of the file with templates
 */
private void addTemplatesFromFile(final URL templates) {
  if (templates != null) {
    TemplateReaderWriter reader = new TemplateReaderWriter();
    try {
      InputStream openStream = templates.openStream();
      try {
        TemplatePersistenceData[] datas = reader.read(openStream, null);
        int templateCounter = 0;
        for (TemplatePersistenceData data : datas) {
          if (data.getId() == null) {
            templateCounter++;
            TemplatePersistenceData dataWithGenId = new TemplatePersistenceData(data.getTemplate(), data.isEnabled(), templates.getPath() + "." //$NON-NLS-1$
                + templateCounter);
            dataWithGenId.setDeleted(data.isDeleted());
            internalAdd(dataWithGenId);
          } else {
            // if contributed template has an id
            internalAdd(data);
          }
        }
      } finally {
        openStream.close();
      }
    } catch (IOException e) {
      LOG.error(e);
    }
  }
}
 
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= JSDTTypeScriptUIPlugin.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$
	}		
}
 
源代码14 项目: typescript.java   文件: CodeTemplateBlock.java
public Object getParent(TreeListDialogField 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;
}
 
源代码15 项目: typescript.java   文件: CodeTemplateBlock.java
protected TemplatePersistenceData[] getTemplateOfCategory(boolean isComment) {
	ArrayList 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 (TemplatePersistenceData[]) res.toArray(new TemplatePersistenceData[res.size()]);
}
 
源代码16 项目: typescript.java   文件: CodeTemplateBlock.java
protected void updateSourceViewerInput(List 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 = JavaScriptPlugin.getDefault().getCodeTemplateContextRegistry()
				.getContextType(template.getContextTypeId());
		fTemplateProcessor.setContextType(type);
		fPatternViewer.getDocument().set(template.getPattern());
	} else {
		fPatternViewer.getDocument().set(""); //$NON-NLS-1$
	}
}
 
源代码17 项目: typescript.java   文件: CodeTemplateBlock.java
protected void doButtonPressed(int buttonIndex, List selected) {
	if (buttonIndex == IDX_EDIT) {
		edit((TemplatePersistenceData) selected.get(0));
	} else if (buttonIndex == IDX_EXPORT) {
		export(selected);
	} else if (buttonIndex == IDX_EXPORTALL) {
		exportAll();
	} else if (buttonIndex == IDX_IMPORT) {
		import_();
	}
}
 
源代码18 项目: typescript.java   文件: CodeTemplateBlock.java
private void edit(TemplatePersistenceData data) {
	Template newTemplate = new Template(data.getTemplate());
	EditTemplateDialog dialog = new EditTemplateDialog(getShell(), newTemplate, true, false,
			JavaScriptPlugin.getDefault().getCodeTemplateContextRegistry());
	if (dialog.open() == Window.OK) {
		// changed
		data.setTemplate(dialog.getTemplate());
		fCodeTemplateTree.refresh(data);
		fCodeTemplateTree.selectElements(new StructuredSelection(data));
	}
}
 
源代码19 项目: typescript.java   文件: CodeTemplateBlock.java
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;
		}
	}
}
 
源代码20 项目: typescript.java   文件: CodeTemplateBlock.java
private void export(List selected) {
	Set datas = new HashSet();
	for (int i = 0; i < selected.size(); i++) {
		Object curr = selected.get(i);
		if (curr instanceof TemplatePersistenceData) {
			datas.add(curr);
		} else {
			TemplatePersistenceData[] cat = getTemplateOfCategory(curr == COMMENT_NODE);
			datas.addAll(Arrays.asList(cat));
		}
	}
	export((TemplatePersistenceData[]) datas.toArray(new TemplatePersistenceData[datas.size()]));
}
 
源代码21 项目: typescript.java   文件: CodeTemplateBlock.java
public boolean performOk(boolean enabled) {
	if (fProject != null) {
		TemplatePersistenceData[] templateData= fTemplateStore.getTemplateData();
		for (int i= 0; i < templateData.length; i++) {
			fTemplateStore.setProjectSpecific(templateData[i].getId(), enabled);
		}
	}
	try {
		fTemplateStore.save();
	} catch (IOException e) {
		JavaScriptPlugin.log(e);
		openWriteErrorDialog(e);
	}
	return true;
}
 
源代码22 项目: KaiZen-OpenAPI-Editor   文件: Activator.java
private void addNamedTemplates(String inlineContextId, String namedContextId, String key) {
    Template[] schemaTemplates = templateStore.getTemplates(inlineContextId);
    for (int i = 0; i < schemaTemplates.length; i++) {
        Template schemaTemplate = schemaTemplates[i];
        Template template = createNamedTemplate(schemaTemplate, namedContextId, key);
        templateStore.add(new TemplatePersistenceData(template, true));
    }
}
 
源代码23 项目: gama   文件: GamlTemplateStore.java
/**
 * Adds a template to the internal store. The added templates must have a unique id.
 *
 * @param data
 *            the template data to add
 */
@Override
protected void internalAdd(final TemplatePersistenceData data) {
	if (!data.isCustom()) {
		// give the data a new unique id
		final String id = getNewIdFromId(data.getId());
		final TemplatePersistenceData d2 = new TemplatePersistenceData(data.getTemplate(), true, id);
		super.internalAdd(d2);
	}
}
 
源代码24 项目: gama   文件: GamlTemplateStore.java
@Override
public org.eclipse.jface.text.templates.persistence.TemplatePersistenceData getTemplateData(final String id) {
	if (id == null) { return null; }
	for (final org.eclipse.text.templates.TemplatePersistenceData data : internalGetTemplates()) {
		if (id.equals(data.getId())) {
			final org.eclipse.jface.text.templates.persistence.TemplatePersistenceData wrap =
					new org.eclipse.jface.text.templates.persistence.TemplatePersistenceData(data);
			return wrap;
		}

	}
	return null;
}
 
源代码25 项目: gama   文件: GamlEditor.java
/**
 * @see msi.gama.lang.gaml.ui.editor.IGamlEditor#openEditTemplateDialog()
 */
public boolean openEditTemplateDialog(final TemplatePersistenceData data, final boolean edit) {
	final GamlEditTemplateDialog d = getTemplateFactory().createDialog(data, edit, getEditorSite().getShell());
	if (d.open() == Window.OK) {
		getTemplateStore().directAdd(d.getData(), edit);
		return true;
	}
	return false;
}
 
源代码26 项目: gama   文件: TemplateReferenceMenu.java
TemplateNode(final Node parent, final TemplatePersistenceData t, final int rank) {
	super(parent);
	name = t.getTemplate().getName();
	desc = t.getTemplate().getDescription();
	pattern = t.getTemplate().getPattern();
	this.rank = rank;
}
 
源代码27 项目: gama   文件: TemplateReferenceMenu.java
@Override
protected void fillMenu() {

	if (tree == null || tree.getChildren().isEmpty()) {
		tree = new TemplateRoot();
		store = getEditor().getTemplateStore();
		final TemplatePersistenceData[] templates = store.getTemplateData(false);
		for (final TemplatePersistenceData t : templates) {
			tree.add(t);
		}
	}
	tree.fillMenu(mainMenu);
}
 
/**
 * 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) {
	TemplateStore codeTemplateStore= JavaPlugin.getDefault().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);
}
 
@Override
public void load() throws IOException {
	super.load();

	if (fLegacySet != null) {

		List<Template> legacyTemplates= new ArrayList<Template>(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;
	}
}
 
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;
}
 
 类所在包
 同包方法