//	/**
  //	 * export images
  //	 *
  //	 * RAP currently, GC drawing is only supported on Canvas, but not on image.
  //	 */
  //	public void exportImage() {
  //		try {
  //           IFigure figure =
  // ((AbstractGraphicalEditPart)getGraphicalViewer().getRootEditPart()).getFigure();
  //           File file = new File ("/Users/hangum/Downloads/gefout.png");
  //           if (file.exists ()) {
  //               if (!MessageDialog.openQuestion(null, "prompted", "The file already exists. Want
  // to re-cover it?")) {
  //                   return;
  //               }
  //           } else {
  //        	   file.createNewFile ();
  //           }
  //
  //           if (figure instanceof Viewport) {
  //	           ((Viewport)figure).setViewLocation(0, 0);
  //           }
  //
  //           Dimension size = figure.getPreferredSize ();
  //           Image image = new Image (Display.getDefault (), size.width, size.height);
  ////           Drawable drawable = (Drawable)image;
  //
  //           GC gc = new GC(getSite().getShell().getDisplay());
  //           gc.drawImage(image, size.width, size.height);
  //           SWTGraphics graphics = new SWTGraphics(gc);
  //           figure.paint (graphics);
  //
  //           ImageLoader loader = new ImageLoader ();
  //           loader.data = new ImageData []{image.getImageData ()};
  //           loader.save("/Users/hangum/Downloads/gefout.png",
  // SWT.IMAGE_PNG);//FileFormat.FORMATS);
  //
  //           graphics.dispose();
  //           gc.dispose();
  //           image.dispose();
  //
  //        } catch (Exception e) {
  //        	e.printStackTrace();
  //	     } finally {
  //        }
  //	}
  @Override
  public void doSave(IProgressMonitor monitor) {
    //		exportImage();

    // 신규 저장이면
    if (userDBErd == null) {

      // file 이름 dialog
      ResourceSaveDialog rsDialog =
          new ResourceSaveDialog(null, null, userDB, PublicTadpoleDefine.RESOURCE_TYPE.ERD, "");
      if (rsDialog.open() == Window.OK) {

        try {
          // erd 정보 디비저장
          userDBErd =
              TadpoleSystem_UserDBResource.saveResource(
                  userDB, rsDialog.getRetResourceDao(), createResourceToString());
          userDBErd.setParent(userDB);

          // command stack 초기화
          getCommandStack().markSaveLocation();

          // title 수정
          setPartName(userDBErd.getName());

          // managerView tree refresh
          // 뒤에 시간을붙인것은 한번 저장한 db_seq는 업데이지 않는 오류를 방지하기위해...
          //
          PlatformUI.getPreferenceStore()
              .setValue(
                  PublicTadpoleDefine.SAVE_FILE,
                  ""
                      + userDBErd.getDb_seq()
                      + ":"
                      + System.currentTimeMillis()); // $NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$

        } catch (Exception e) {
          logger.error(Messages.get().TadpoleEditor_9, e);

          Status errStatus =
              new Status(IStatus.ERROR, Activator.PLUGIN_ID, e.getMessage(), e); // $NON-NLS-1$
          ExceptionDetailsErrorDialog.openError(
              getSite().getShell(),
              "Error",
              Messages.get().TadpoleEditor_3,
              errStatus); //$NON-NLS-1$
        }
      }

      // 기존 리소스를 가지고 있었으면
    } else {

      try {
        TadpoleSystem_UserDBResource.updateResource(userDBErd, createResourceToString());
        getCommandStack().markSaveLocation();
      } catch (Exception e) {
        logger.error(Messages.get().TadpoleEditor_12, e);

        Status errStatus =
            new Status(IStatus.ERROR, Activator.PLUGIN_ID, e.getMessage(), e); // $NON-NLS-1$
        ExceptionDetailsErrorDialog.openError(
            getSite().getShell(),
            "Error",
            Messages.get().TadpoleEditor_1,
            errStatus); //$NON-NLS-1$
      }
    }
  }