| /* |
| * Copyright 2000-2009 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 com.intellij.uiDesigner.wizard; |
| |
| import com.intellij.openapi.diagnostic.Logger; |
| import com.intellij.openapi.project.Project; |
| import com.intellij.openapi.vfs.VirtualFile; |
| import com.intellij.psi.*; |
| import com.intellij.uiDesigner.lw.LwRootContainer; |
| import org.jetbrains.annotations.NotNull; |
| |
| /** |
| * @author Anton Katilin |
| * @author Vladimir Kondratyev |
| */ |
| public final class WizardData { |
| private static final Logger LOG = Logger.getInstance("#com.intellij.uiDesigner.wizard.WizardData"); |
| |
| @NotNull public final Project myProject; |
| /** |
| * Form's file. |
| */ |
| @NotNull public final VirtualFile myFormFile; |
| |
| /** |
| * If <code>true</code> then {@link #myShortClassName} and {@link #myPackageName} should be |
| * used, otherwise {@link #myBeanClass} should be used. |
| */ |
| public boolean myBindToNewBean; |
| /** |
| * |
| */ |
| public String myShortClassName; |
| /** |
| * |
| */ |
| public String myPackageName; |
| |
| /** |
| * Bean's class. If <code>null</code> then bean's class is't defined yet. |
| */ |
| public PsiClass myBeanClass; |
| @NotNull public final FormProperty2BeanProperty[] myBindings; |
| |
| public boolean myGenerateIsModified; |
| |
| public WizardData(@NotNull final Project project, @NotNull final VirtualFile formFile) throws Generator.MyException { |
| myProject = project; |
| myFormFile = formFile; |
| myBindToNewBean = true; |
| myGenerateIsModified = true; |
| |
| final LwRootContainer[] rootContainer = new LwRootContainer[1]; |
| |
| // Create initial bingings between form fields and bean's properties. |
| // TODO[vova] ask Anton to not throw exception if form-field doesn't have corresponded field in the Java class |
| final FormProperty[] formProperties = Generator.exposeForm(myProject, myFormFile, rootContainer); |
| myBindings = new FormProperty2BeanProperty[formProperties.length]; |
| for(int i = formProperties.length - 1; i >= 0; i--){ |
| myBindings[i] = new FormProperty2BeanProperty(formProperties[i]); |
| } |
| |
| final PsiManager manager = PsiManager.getInstance(myProject); |
| final VirtualFile directory = formFile.getParent(); |
| LOG.assertTrue(directory.isDirectory()); |
| final PsiDirectory psiDirectory = manager.findDirectory(directory); |
| LOG.assertTrue(psiDirectory != null); |
| final PsiPackage aPackage = JavaDirectoryService.getInstance().getPackage(psiDirectory); |
| if(aPackage != null){ |
| myPackageName = aPackage.getQualifiedName(); |
| } |
| } |
| } |