package com.intellij.flex.model.bc.impl; import com.intellij.flex.model.bc.JpsAirPackageEntry; import com.intellij.util.xmlb.annotations.Attribute; import com.intellij.util.xmlb.annotations.Tag; import org.jetbrains.annotations.NotNull; import org.jetbrains.jps.model.JpsElementCreator; import org.jetbrains.jps.model.ex.JpsElementBase; import org.jetbrains.jps.model.ex.JpsElementChildRoleBase; import org.jetbrains.jps.model.ex.JpsElementCollectionRole; public class JpsAirPackageEntryImpl extends JpsElementBase<JpsAirPackageEntryImpl> implements JpsAirPackageEntry { static final JpsAirPackageEntryRole ROLE = new JpsAirPackageEntryRole(); static final JpsElementCollectionRole<JpsAirPackageEntry> COLLECTION_ROLE = JpsElementCollectionRole.create(ROLE); private @NotNull String myFilePath = ""; private @NotNull String myPathInPackage = ""; JpsAirPackageEntryImpl() { } private JpsAirPackageEntryImpl(final JpsAirPackageEntryImpl original) { myFilePath = original.myFilePath; myPathInPackage = original.myPathInPackage; } @NotNull public JpsAirPackageEntryImpl createCopy() { return new JpsAirPackageEntryImpl(this); } public void applyChanges(@NotNull final JpsAirPackageEntryImpl modified) { myFilePath = modified.myFilePath; myPathInPackage = modified.myPathInPackage; } // --------------------------------------------- @NotNull public String getFilePath() { return myFilePath; } @NotNull public String getPathInPackage() { return myPathInPackage; } // --------------------------------------------- State getState() { final State state = new State(); state.FILE_PATH = myFilePath; state.PATH_IN_PACKAGE = myPathInPackage; return state; } void loadState(final State state) { myFilePath = state.FILE_PATH; myPathInPackage = state.PATH_IN_PACKAGE; } private static class JpsAirPackageEntryRole extends JpsElementChildRoleBase<JpsAirPackageEntry> implements JpsElementCreator<JpsAirPackageEntry> { private JpsAirPackageEntryRole() { super("air package entry"); } @NotNull public JpsAirPackageEntry create() { return new JpsAirPackageEntryImpl(); } } @Tag("FilePathAndPathInPackage") public static class State { @Attribute("file-path") public String FILE_PATH = ""; @Attribute("path-in-package") public String PATH_IN_PACKAGE = ""; } }