Как предоставить пользовательский компонент в существующей палитре редактора веб-страниц - PullRequest
4 голосов
/ 01 апреля 2011

Я хочу добавить новый пользовательский компонент в палитре редактора веб-страниц с именем «myHTMLComponent».Итак, как только пользователь открывает любую html-страницу с WPE, там должен присутствовать myHTMLComponentM.Как я могу сделать все необходимое, более того, этот компонент также должен будет генерировать соответствующие изменения кода.Как добиться желаемого результата.

Могу ли я получить какой-либо вклад для этого.Я уже создал стандартный тег метаданных, но что дальше!

Ответы [ 3 ]

3 голосов
/ 18 апреля 2011

Наконец, я нашел решение проблемы.

Для добавления новых категорий в палитру, нам нужно использовать pagedesignerextension в plugin.xml следующим образом -

<extension
point="org.eclipse.jst.pagedesigner.pageDesignerExtension">
<paletteFactory
class="com.comp.myeditor.palette.CustomEditorPaletteFactory">
</paletteFactory>
</extension>

Где CustomEditorPaletteFactoryбудет расширять AbstractPaletteFactory.Здесь, в createPaletteRoot (), мы можем добавить нашу категорию.

public PaletteRoot createPaletteRoot(IEditorInput editorInput){
PaletteRoot paletteRoot = new PaletteRoot();
paletteRoot.add(createStandardComponents());
return paletteRoot;
//return null;
}


private static PaletteContainer createStandardComponents() {
PaletteDrawer componentsDrawer = new PaletteDrawer("CustomHTMLComponent");

TagToolPaletteEntry paletteEntry = new TagToolPaletteEntry(
new FormPaletteComponent(".....);
componentsDrawer.add(paletteEntry);

return componentsDrawer;
}

Это создаст категорию компонентов в палитре, и мы можем добавить столько компонентов, сколько необходимо, используя componentdrawer.

Длядобавление новой категории в существующую - добавьте это в конструктор -

super();
        this._paletteContext = PaletteItemManager.createPaletteContext(file);
        this._manager = PaletteItemManager.getInstance(_paletteContext);

Затем используйте группировку палитры следующим образом -

PaletteGroup controls = new PaletteGroup("CUST HTML");
        super.add(controls);

        ToolEntry tool = new SelectionToolEntry("CUST Cursor",
                "Cursor DESCRIPTION");

        controls.add(tool);
        setDefaultEntry(tool);
//Custom Marquee
        controls.add(new MarqueeToolEntry("Marquee", "Marquee Desc"));

        controls.add(new PaletteSeparator());
//This class maintins or load all categories features
        controls.add(new CustomComponentToolEntry("Custom Component", "Custom Component Descrition", 
0 голосов
/ 29 ноября 2011

Это очень интересная тема, и я думаю, что мы являемся пионером, документирующим эту функцию затмения. Здесь другой хороший момент, я хочу персонализировать тег ... например что-то похожее на то, чего я хочу достичь, это добавить тег типа «Моя метка TRUEFALSE», а затем, когда он выбран, и поместить его в конструктор HTML, я хочу стать чем-то вроде <select><option>YES</option><option>NO</option></select>, и я предполагаю, что я могу добиться этого, выполнив что-то с расширением tagTransformOperation ... если вы знаете, как его реализовать, пожалуйста, дайте мне знать. также есть другие расширения (tagConverterFactory, elValueResolver). Я предполагаю здесь! пожалуйста, я хотел бы вашей помощи.

<extension point="org.eclipse.jst.pagedesigner.pageDesignerExtension">
   <paletteFactory ...>
   <tagTransformOperation id="plugin.tagTransformOperation1XXXXXX">...

РЕШЕНИЕ ?? (Китайский) -разрешен с помощью tagConverterFactory http://www.blogjava.net/reloadcn/archive/2007/11/08/webeditor1.html

0 голосов
/ 28 ноября 2011

Это действительно хорошее начало, но я не могу найти учебник или книгу, которая бы углубилась в этом вопросе.Например, я не хочу заменять палитру по умолчанию, но этот код заменяется на «новый PaletteRoot ()», и я потерял свои HTML-теги.Также я хочу, чтобы мои новые пользовательские компоненты вели себя как HTML-теги, используя Drag and Drop, но я не знаю, как ?????????

Подробнее: я обнаружил этот код, которыйполезно, тогда как файл поступает из ((FileEditorInput) editorInput) .getFile ()

PaletteRoot paletteRoot = DesignerPaletteRootFactory.createPaletteRoot(file);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...