@Override public void performPaste(@NotNull DataContext dataContext) { TemplateGroup group = myConfigurable.getSingleSelectedGroup(); assert group != null; String buffer = CopyPasteManager.getInstance().getContents(DataFlavor.stringFlavor); assert buffer != null; try { for (Element templateElement : JDOMUtil.load(new StringReader("<root>" + buffer + "</root>")) .getChildren(TemplateSettings.TEMPLATE)) { TemplateImpl template = TemplateSettings.readTemplateFromElement( group.getName(), templateElement, getClass().getClassLoader()); while (group.containsTemplate(template.getKey(), template.getId())) { template.setKey(template.getKey() + "1"); if (template.getId() != null) { template.setId(template.getId() + "1"); } } myConfigurable.addTemplate(template); } } catch (JDOMException ignore) { } catch (IOException ignore) { } }
@Override public boolean isPastePossible(@NotNull DataContext dataContext) { if (myConfigurable.getSingleSelectedGroup() == null) return false; String s = CopyPasteManager.getInstance().getContents(DataFlavor.stringFlavor); return s != null && s.startsWith("<template "); }
@Override public void performCopy(@NotNull DataContext dataContext) { final Set<TemplateImpl> templates = myConfigurable.getSelectedTemplates().keySet(); CopyPasteManager.getInstance() .setContents( new StringSelection( StringUtil.join( templates, new Function<TemplateImpl, String>() { @Override public String fun(TemplateImpl template) { TemplateContext zeroContext = new TemplateContext(); for (TemplateContextType type : TemplateContextType.EP_NAME.getExtensions()) { zeroContext.setEnabled(type, false); } return JDOMUtil.writeElement( TemplateSettings.serializeTemplate(template, zeroContext)); } }, SystemProperties.getLineSeparator()))); }
@Override public boolean isCopyEnabled(@NotNull DataContext dataContext) { return !myConfigurable.getSelectedTemplates().isEmpty(); }