/* * Copyright 2003-2016 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package jetbrains.mps.ide.generator; import jetbrains.mps.generator.CustomGenerationModuleFacet; import jetbrains.mps.ide.icons.IdeIcons; import jetbrains.mps.ide.ui.dialogs.properties.tabs.BaseTab; import jetbrains.mps.project.AbstractModule; import jetbrains.mps.project.MPSProject; import org.jetbrains.mps.openapi.module.SModuleFacet; import org.jetbrains.mps.openapi.ui.persistence.FacetTab; import javax.swing.JPanel; import java.awt.BorderLayout; /** * @author Artem Tikhomirov * @since 3.3 */ class CustomGenerationTab extends BaseTab implements FacetTab { private final MPSProject myProject; private final CustomGenerationModuleFacet myModuleFacet; private GenPlanPickPanel myPlanPanel; public CustomGenerationTab(MPSProject mpsProject, CustomGenerationModuleFacet moduleFacet) { super("Custom generation", IdeIcons.GENERATOR_ICON, "Alternative generation process for models of the module"); myProject = mpsProject; myModuleFacet = moduleFacet; } @Override public SModuleFacet getFacet() { return myModuleFacet; } @Override public void init() { JPanel p = new JPanel(); // XXX For now, restrict to plan models from the visible modules, generally, shall allow from anywhere myPlanPanel = new GenPlanPickPanel(myProject, ((AbstractModule) myModuleFacet.getModule()).getScope(), "Custom generation plan"); myPlanPanel.setPlanModel(myModuleFacet.getPlanModelReference()); p.setLayout(new BorderLayout()); p.add(myPlanPanel, BorderLayout.NORTH); setTabComponent(p); } @Override public boolean isModified() { if (myPlanPanel.getPlanModel() == null) { return myModuleFacet.getPlanModelReference() != null; } else { return !myPlanPanel.getPlanModel().equals(myModuleFacet.getPlanModelReference()); } } @Override public void apply() { myModuleFacet.setPlanModelReference(myPlanPanel.getPlanModel()); } }