--- /dev/null
+package org.simantics.export.core.intf;\r
+\r
+import org.eclipse.jface.resource.ImageDescriptor;\r
+import org.simantics.export.core.error.ExportException;\r
+\r
+/**\r
+ * Description of a file format.\r
+ *\r
+ * @author toni.kalajainen@semantum.fi\r
+ */\r
+public interface Format extends FormatClass {\r
+ \r
+ /**\r
+ * Format identifier\r
+ * @return format identifier\r
+ */\r
+ String id();\r
+ \r
+ /**\r
+ * File extension of this format\r
+ * @return\r
+ */\r
+ String fileext();\r
+ \r
+ /**\r
+ * Defines the writer class that the exporter extension will use for writing the content of this format.\r
+ * @return\r
+ * @throws ClassNotFoundException \r
+ */\r
+ Class<?> writerClass() throws ClassNotFoundException;\r
+ \r
+ /**\r
+ * The class the importer will use for reading the associated content type.\r
+ * @return\r
+ * @throws ClassNotFoundException \r
+ */\r
+ Class<?> readerClass() throws ClassNotFoundException;\r
+ \r
+ /**\r
+ * Create action factory for the file format.\r
+ * \r
+ * @return action factory\r
+ * @throws ExportException \r
+ */\r
+ FormatClass formatActions() throws ExportException;\r
+ \r
+ /**\r
+ * The label\r
+ * @return\r
+ */\r
+ String label();\r
+ \r
+ /**\r
+ * The label in plural form\r
+ * @return\r
+ */\r
+ String plural();\r
+ \r
+ /**\r
+ * Image descriptor\r
+ * @return\r
+ */\r
+ ImageDescriptor icon();\r
+ \r
+ /**\r
+ * Set to true, if the format supports merging of multiple items of content of one type.\r
+ * @return true if this is group format\r
+ */\r
+ boolean isGroupFormat();\r
+ \r
+ /**\r
+ * Set to true, if the format can contain multiple content items of any types.\r
+ * @return true if this is container format\r
+ */\r
+ boolean isContainerFormat();\r
+ \r
+ /**\r
+ * This attribute determines if the format is attachable to another format of group type.\r
+ * \r
+ * @return true if this is attachable format.\r
+ */\r
+ boolean isAttachable();\r
+ \r
+ /**\r
+ * This property determines - if true - that the content must always be published and cannot be hidden inside container file.\r
+ * \r
+ * @return if, true that the content must always be published and cannot be hidden inside container file.\r
+ */\r
+ boolean isAlwaysPublished();\r
+ \r
+ /**\r
+ * If true, this format is can contain links to other files.\r
+ * @return true, this format is can contain links to other files.\r
+ */\r
+ boolean isLinkContainer();\r
+ \r
+ /**\r
+ * The default selection for merge the group.\r
+ * @return\r
+ */\r
+ boolean mergeGroupFormatDefault();\r
+ \r
+}\r