Java 类com.intellij.uiDesigner.actions.PreviewFormAction 实例源码

项目:intellij-ce-playground    文件:PreviewNestedFormLoader.java   
public LwRootContainer loadForm(String formFileName) throws Exception {
  LwRootContainer rootContainer = super.loadForm(formFileName);
  if (!myGeneratedClasses.contains(formFileName)) {
    myGeneratedClasses.add(formFileName);
    String generatedClassName = "FormPreviewFrame" + myGeneratedClasses.size();
    PreviewFormAction.setPreviewBindings(rootContainer, generatedClassName);
    generateStubClass(rootContainer, generatedClassName);
  }
  return rootContainer;
}
项目:intellij-ce-playground    文件:PreviewNestedFormLoader.java   
private void generateStubClass(final LwRootContainer rootContainer, final String generatedClassName) throws IOException,
                                                                                                            CodeGenerationException {
  @NonNls ClassWriter cw = new ClassWriter(ClassWriter.COMPUTE_FRAMES);
  cw.visit(Opcodes.V1_1, Opcodes.ACC_PUBLIC, generatedClassName, null, "java/lang/Object", ArrayUtil.EMPTY_STRING_ARRAY);

  cw.visitField(Opcodes.ACC_PUBLIC, PreviewFormAction.PREVIEW_BINDING_FIELD, "Ljavax/swing/JComponent;", null, null);

  @NonNls MethodVisitor mv = cw.visitMethod(Opcodes.ACC_PUBLIC, "<init>", "()V", null, null);
  mv.visitCode();
  mv.visitVarInsn(Opcodes.ALOAD, 0);
  mv.visitMethodInsn(Opcodes.INVOKESPECIAL, "java/lang/Object", "<init>", "()V", false);
  mv.visitInsn(Opcodes.RETURN);
  mv.visitMaxs(1, 1);
  mv.visitEnd();

  cw.visitEnd();

  ByteArrayInputStream bais = new ByteArrayInputStream(cw.toByteArray());
  AsmCodeGenerator acg = new AsmCodeGenerator(rootContainer, myFinder, this, true, new PsiClassWriter(myModule));
  byte[] data = acg.patchClass(bais);
  FormErrorInfo[] errors = acg.getErrors();
  if (errors.length > 0) {
    throw new CodeGenerationException(errors [0].getComponentId(), errors [0].getErrorMessage());
  }

  FileOutputStream fos = new FileOutputStream(new File(myTempPath, generatedClassName + ".class"));
  try {
    fos.write(data);
  }
  finally {
    fos.close();
  }
}
项目:tools-idea    文件:PreviewNestedFormLoader.java   
public LwRootContainer loadForm(String formFileName) throws Exception {
  LwRootContainer rootContainer = super.loadForm(formFileName);
  if (!myGeneratedClasses.contains(formFileName)) {
    myGeneratedClasses.add(formFileName);
    String generatedClassName = "FormPreviewFrame" + myGeneratedClasses.size();
    PreviewFormAction.setPreviewBindings(rootContainer, generatedClassName);
    generateStubClass(rootContainer, generatedClassName);
  }
  return rootContainer;
}
项目:tools-idea    文件:PreviewNestedFormLoader.java   
private void generateStubClass(final LwRootContainer rootContainer, final String generatedClassName) throws IOException,
                                                                                                            CodeGenerationException {
  @NonNls ClassWriter cw = new ClassWriter(ClassWriter.COMPUTE_FRAMES);
  cw.visit(Opcodes.V1_1, Opcodes.ACC_PUBLIC, generatedClassName, null, "java/lang/Object", ArrayUtil.EMPTY_STRING_ARRAY);

  cw.visitField(Opcodes.ACC_PUBLIC, PreviewFormAction.PREVIEW_BINDING_FIELD, "Ljavax/swing/JComponent;", null, null);

  @NonNls MethodVisitor mv = cw.visitMethod(Opcodes.ACC_PUBLIC, "<init>", "()V", null, null);
  mv.visitCode();
  mv.visitVarInsn(Opcodes.ALOAD, 0);
  mv.visitMethodInsn(Opcodes.INVOKESPECIAL,
          "java/lang/Object",
          "<init>",
          "()V");
  mv.visitInsn(Opcodes.RETURN);
  mv.visitMaxs(1, 1);
  mv.visitEnd();

  cw.visitEnd();

  ByteArrayInputStream bais = new ByteArrayInputStream(cw.toByteArray());
  AsmCodeGenerator acg = new AsmCodeGenerator(rootContainer, myFinder, this, true, new PsiClassWriter(myModule));
  byte[] data = acg.patchClass(bais);
  FormErrorInfo[] errors = acg.getErrors();
  if (errors.length > 0) {
    throw new CodeGenerationException(errors [0].getComponentId(), errors [0].getErrorMessage());
  }

  FileOutputStream fos = new FileOutputStream(new File(myTempPath, generatedClassName + ".class"));
  try {
    fos.write(data);
  }
  finally {
    fos.close();
  }
}
项目:consulo-ui-designer    文件:PreviewNestedFormLoader.java   
public LwRootContainer loadForm(String formFileName) throws Exception {
  LwRootContainer rootContainer = super.loadForm(formFileName);
  if (!myGeneratedClasses.contains(formFileName)) {
    myGeneratedClasses.add(formFileName);
    String generatedClassName = "FormPreviewFrame" + myGeneratedClasses.size();
    PreviewFormAction.setPreviewBindings(rootContainer, generatedClassName);
    generateStubClass(rootContainer, generatedClassName);
  }
  return rootContainer;
}
项目:consulo-ui-designer    文件:PreviewNestedFormLoader.java   
private void generateStubClass(final LwRootContainer rootContainer, final String generatedClassName) throws IOException,
                                                                                                            CodeGenerationException {
  @NonNls ClassWriter cw = new ClassWriter(ClassWriter.COMPUTE_FRAMES);
  cw.visit(Opcodes.V1_1, Opcodes.ACC_PUBLIC, generatedClassName, null, "java/lang/Object", ArrayUtil.EMPTY_STRING_ARRAY);

  cw.visitField(Opcodes.ACC_PUBLIC, PreviewFormAction.PREVIEW_BINDING_FIELD, "Ljavax/swing/JComponent;", null, null);

  @NonNls MethodVisitor mv = cw.visitMethod(Opcodes.ACC_PUBLIC, "<init>", "()V", null, null);
  mv.visitCode();
  mv.visitVarInsn(Opcodes.ALOAD, 0);
  mv.visitMethodInsn(Opcodes.INVOKESPECIAL,
          "java/lang/Object",
          "<init>",
          "()V",
    false);
  mv.visitInsn(Opcodes.RETURN);
  mv.visitMaxs(1, 1);
  mv.visitEnd();

  cw.visitEnd();

  ByteArrayInputStream bais = new ByteArrayInputStream(cw.toByteArray());
  AsmCodeGenerator acg = new AsmCodeGenerator(rootContainer, myFinder, this, true, new PsiClassWriter(myModule));
  byte[] data = acg.patchClass(bais);
  FormErrorInfo[] errors = acg.getErrors();
  if (errors.length > 0) {
    throw new CodeGenerationException(errors [0].getComponentId(), errors [0].getErrorMessage());
  }

  FileOutputStream fos = new FileOutputStream(new File(myTempPath, generatedClassName + ".class"));
  try {
    fos.write(data);
  }
  finally {
    fos.close();
  }
}