diff --git a/code_samples/facet_basics/META-INF/plugin.xml b/code_samples/facet_basics/META-INF/plugin.xml index 01841ba44..5b15982c7 100644 --- a/code_samples/facet_basics/META-INF/plugin.xml +++ b/code_samples/facet_basics/META-INF/plugin.xml @@ -1,43 +1,36 @@ - com.yourcompany.unique.plugin.id - Plugin display name here - 1.0 - YourCompany + com.intellij.tutorials.facet + Facet Demo + 1.0 + JetBrains - - most HTML tags may be used - ]]> + Basic example of working with facets - - most HTML tags may be used - ]]> - + Initial commit - - + + - - + + - - - + + + - - - + + + - - - + + + - - - + + + \ No newline at end of file diff --git a/code_samples/facet_basics/src/com/intellij/tutorials/facet/DemoFacet.java b/code_samples/facet_basics/src/com/intellij/tutorials/facet/DemoFacet.java new file mode 100644 index 000000000..804f6d1a4 --- /dev/null +++ b/code_samples/facet_basics/src/com/intellij/tutorials/facet/DemoFacet.java @@ -0,0 +1,16 @@ +package com.intellij.tutorials.facet; + +import com.intellij.facet.Facet; +import com.intellij.facet.FacetType; +import com.intellij.openapi.module.Module; + +/** + * @author Anna Bulenkova + */ +public class DemoFacet extends Facet { + public static final String ID = "DEMO_FACET_ID"; + + public DemoFacet(FacetType facetType, Module module, String name, DemoFacetConfiguration configuration, Facet underlyingFacet) { + super(facetType, module, name, configuration, underlyingFacet); + } +} diff --git a/code_samples/facet_basics/src/com/intellij/tutorials/facet/DemoFacetConfiguration.java b/code_samples/facet_basics/src/com/intellij/tutorials/facet/DemoFacetConfiguration.java new file mode 100644 index 000000000..8ba2f450b --- /dev/null +++ b/code_samples/facet_basics/src/com/intellij/tutorials/facet/DemoFacetConfiguration.java @@ -0,0 +1,79 @@ +package com.intellij.tutorials.facet; + +import com.intellij.facet.FacetConfiguration; +import com.intellij.facet.ui.FacetEditorContext; +import com.intellij.facet.ui.FacetEditorTab; +import com.intellij.facet.ui.FacetValidatorsManager; +import com.intellij.openapi.util.InvalidDataException; +import com.intellij.openapi.util.WriteExternalException; +import org.jdom.Element; +import org.jetbrains.annotations.Nls; +import org.jetbrains.annotations.NotNull; + +import javax.swing.*; +import java.awt.*; + +/** + * @author Anna Bulenkova + */ +public class DemoFacetConfiguration implements FacetConfiguration { + public static final String DEMO_FACET_TAG_NAME = "DemoFacet"; + public static final String PATH_TO_SDK_ATTR_NAME = "pathToSdk"; + private String myPathToSdk = ""; + JTextField myPath = new JTextField(myPathToSdk); + @Override + public FacetEditorTab[] createEditorTabs(FacetEditorContext context, FacetValidatorsManager manager) { + return new FacetEditorTab[] { + new FacetEditorTab() { + + @NotNull + @Override + public JComponent createComponent() { + JPanel top = new JPanel(new BorderLayout()); + top.add(new JLabel("Path to SDK: "), BorderLayout.WEST); + top.add(myPath); + JPanel panel = new JPanel(new BorderLayout()); + panel.add(top, BorderLayout.NORTH); + return panel; + } + + @Nls + @Override + public String getDisplayName() { + return "Demo Framework"; + } + + @Override + public boolean isModified() { + return myPath.getText().equalsIgnoreCase(myPathToSdk); +// return !StringUtil.equalsIgnoreWhitespaces(myPath.getText(), myPathToSdk); + } + + @Override + public void reset() { + myPath.setText(myPathToSdk); + } + + @Override + public void disposeUIResources() { + } + } + }; + } + + @Override + public void readExternal(Element element) throws InvalidDataException { + Element facet = element.getChild(DEMO_FACET_TAG_NAME); + if (facet != null) { + myPathToSdk = facet.getAttributeValue(PATH_TO_SDK_ATTR_NAME, ""); + myPath.setText(myPathToSdk); + } + } + + @Override + public void writeExternal(Element element) throws WriteExternalException { + Element facet = new Element(DEMO_FACET_TAG_NAME); + facet.setAttribute(PATH_TO_SDK_ATTR_NAME, myPathToSdk); + element.addContent(facet); + } +} diff --git a/code_samples/facet_basics/src/com/intellij/tutorials/facet/DemoFacetType.java b/code_samples/facet_basics/src/com/intellij/tutorials/facet/DemoFacetType.java new file mode 100644 index 000000000..f1664fd45 --- /dev/null +++ b/code_samples/facet_basics/src/com/intellij/tutorials/facet/DemoFacetType.java @@ -0,0 +1,43 @@ +package com.intellij.tutorials.facet; + +import com.intellij.facet.Facet; +import com.intellij.facet.FacetType; +import com.intellij.facet.FacetTypeId; +import com.intellij.icons.AllIcons; +import com.intellij.openapi.module.Module; +import com.intellij.openapi.module.ModuleType; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +import javax.swing.*; + +/** + * @author Anna Bulenkova + */ +public class DemoFacetType extends FacetType { + private static final FacetTypeId TYPE_ID = new FacetTypeId(DemoFacet.ID); + public DemoFacetType() { + super(TYPE_ID, DemoFacet.ID, "Demo Facet"); + } + + @Override + public DemoFacetConfiguration createDefaultConfiguration() { + return new DemoFacetConfiguration(); + } + + @Override + public DemoFacet createFacet(@NotNull Module module, String s, @NotNull DemoFacetConfiguration configuration, Facet facet) { + return new DemoFacet(this, module, s, configuration, facet); + } + + @Override + public boolean isSuitableModuleType(ModuleType type) { + return true; + } + + @Nullable + @Override + public Icon getIcon() { + return AllIcons.General.Information; + } +}