package ee.edio.garmin.configuration; import com.intellij.openapi.options.ConfigurationException; import com.intellij.openapi.roots.ui.configuration.CommonContentEntriesEditor; import com.intellij.openapi.roots.ui.configuration.ModuleConfigurationState; import org.jetbrains.annotations.NotNull; import org.jetbrains.jps.model.java.JavaResourceRootType; import org.jetbrains.jps.model.java.JavaSourceRootType; import javax.swing.*; import java.awt.*; public class MonkeyContentEntriesEditor extends CommonContentEntriesEditor { private TargetDeviceConfigurable myTargetDeviceConfigurable; public MonkeyContentEntriesEditor(String moduleName, ModuleConfigurationState state) { super(moduleName, state, JavaSourceRootType.SOURCE, JavaSourceRootType.TEST_SOURCE, JavaResourceRootType.RESOURCE, JavaResourceRootType.TEST_RESOURCE); } @Override public void disposeUIResources() { if (myTargetDeviceConfigurable != null) myTargetDeviceConfigurable.disposeUIResources(); super.disposeUIResources(); } @Override public boolean isModified() { return super.isModified() || myTargetDeviceConfigurable != null && myTargetDeviceConfigurable.isModified(); } @Override protected void addAdditionalSettingsToPanel(JPanel mainPanel) { myTargetDeviceConfigurable = new TargetDeviceConfigurable(myProject) { // overriding is needed because it would fail when Applying changes in module settings // though I guess I could give 'this' to TargetDeviceConfigurable so I could have getModule() reference instead of value @NotNull @Override public TargetDeviceModuleExtension getTargetDeviceModuleExtension() { return getModel().getModuleExtension(TargetDeviceModuleExtension.class); } }; mainPanel.add(myTargetDeviceConfigurable.createComponent(), BorderLayout.NORTH); myTargetDeviceConfigurable.reset(); } @Override public void apply() throws ConfigurationException { myTargetDeviceConfigurable.apply(); super.apply(); } }