Ejemplo n.º 1
0
 public void setParent(File file, Folder newParent) {
   tree1.setParent(file, newParent);
   if (sp.getSecondComponent() instanceof FolderView) {
     FolderView view = (FolderView) sp.getSecondComponent();
     view.reload();
   }
 }
Ejemplo n.º 2
0
  /**
   * Reads an Item from a design and inserts it into the data source. Recursively handles any
   * children of the item as well.
   *
   * @since 7.5.0
   * @param node an element representing the item (tree node).
   * @param selected A set accumulating selected items. If the item that is read is marked as
   *     selected, its item id should be added to this set.
   * @param context the DesignContext instance used in parsing
   * @return the item id of the new item
   * @throws DesignException if the tag name of the {@code node} element is not {@code node}.
   */
  @Override
  protected String readItem(Element node, Set<String> selected, DesignContext context) {

    if (!"node".equals(node.tagName())) {
      throw new DesignException(
          "Unrecognized child element in " + getClass().getSimpleName() + ": " + node.tagName());
    }

    String itemId = node.attr("text");
    addItem(itemId);
    if (node.hasAttr("icon")) {
      Resource icon =
          DesignAttributeHandler.readAttribute("icon", node.attributes(), Resource.class);
      setItemIcon(itemId, icon);
    }
    if (node.hasAttr("selected")) {
      selected.add(itemId);
    }

    for (Element child : node.children()) {
      String childItemId = readItem(child, selected, context);
      setParent(childItemId, itemId);
    }
    return itemId;
  }
Ejemplo n.º 3
0
  private void sortAddToTree(Object sid) {
    //        // sort session elements
    //		List<TestSession> caseSessions = parentCase.getSessions();
    //		List<Integer> sortedids = new ArrayList<Integer>();
    //		for (TestSession s : caseSessions){
    //			sortedids.add(s.getId());
    //			// remove tree items
    //			tree.removeItem(s.getId());
    //		}
    //		Collections.sort(sortedids);
    //		Collections.reverse(sortedids);
    //		System.out.println("SORTED ID's: " + sortedids);

    List<Object> sortedids = new ArrayList<Object>();
    for (Object child : tree.getChildren(parentcase.getId())) {
      sortedids.add(child);
    }

    for (Object s : sortedids) {
      // remove tree items
      tree.removeItem(s);
    }

    // add new item and then re-add old items
    tree.addItem(sid);
    tree.setParent(sid, parentcase.getId());
    tree.setChildrenAllowed(sid, false);
    tree.setItemCaption(sid, sessions.getItem(sid).getEntity().getTitle()); // newsession.getTitle()
    tree.expandItem(parentcase.getId());
    tree.select(sid);

    for (Object id : sortedids) { // testcase.getSessions()	matchingsessions
      Object sessionid = sessions.getItem(id).getEntity().getId();
      tree.addItem(sessionid);
      tree.setItemCaption(sessionid, sessions.getItem(id).getEntity().getTitle());
      tree.setParent(sessionid, parentcase.getId());
      tree.setChildrenAllowed(sessionid, false);
    }
  }
  public void init(final Window main) {
    VerticalLayout mainLayout = new VerticalLayout();
    main.setContent(mainLayout);
    mainLayout.setSizeFull();

    HorizontalLayout titlebar = new HorizontalLayout();
    titlebar.addStyleName("titlebar");
    titlebar.setWidth("100%");
    Label title = new Label("Book of Vaadin Examples");
    title.addStyleName("title");
    titlebar.addComponent(title);
    titlebar.setComponentAlignment(title, Alignment.MIDDLE_RIGHT);
    Embedded logo = new Embedded(null, new ThemeResource("img/vaadin-logo.png"));
    titlebar.addComponent(logo);
    titlebar.setComponentAlignment(logo, Alignment.MIDDLE_RIGHT);
    main.addComponent(titlebar);

    HorizontalLayout hor = new HorizontalLayout();
    hor.setSizeFull();
    main.addComponent(hor);
    mainLayout.setExpandRatio(hor, 1.0f);

    final Panel menupanel = new Panel("Examples");
    menupanel.addStyleName("menupanel");
    menupanel.setWidth(null);
    menupanel.setHeight("100%");
    menupanel.getContent().setWidth(null);
    // menupanel.getContent().setHeight("100%");
    hor.addComponent(menupanel);

    final Tree menu = new Tree();
    menu.setWidth(null);
    // menu.setHeight("100%");
    menu.setImmediate(true);
    menupanel.addComponent(menu);

    final Panel viewpanel = new Panel("Selected Example");
    viewpanel.addStyleName("viewpanel");
    viewpanel.setSizeFull();
    VerticalLayout viewlayout = new VerticalLayout();
    viewlayout.addStyleName("viewlayout");
    viewlayout.setSpacing(true);
    viewlayout.setMargin(true);
    viewpanel.setContent(viewlayout);

    hor.addComponent(viewpanel);
    hor.setExpandRatio(viewpanel, 1.0f);

    WebApplicationContext ctx = (WebApplicationContext) getContext();
    BookExampleLibrary library = BookExampleLibrary.getInstance(ctx.getBaseDirectory());

    AbstractExampleItem[] examples = library.getAllExamples();

    // Collect redirects here
    final HashMap<String, String> redirects = new HashMap<String, String>();

    // Collect examples here
    final HashMap<String, CaptionedExampleItem> exampleitems =
        new HashMap<String, CaptionedExampleItem>();

    // Build the menu and collect redirections
    for (int i = 0; i < examples.length; i++)
      if (examples[i] instanceof BookExample || examples[i] instanceof ExampleCtgr) {
        CaptionedExampleItem example = (CaptionedExampleItem) examples[i];
        exampleitems.put(example.getExampleId(), example);

        String itemid = example.getExampleId();
        menu.addItem(itemid);
        menu.setItemCaption(itemid, example.getShortName());

        if (examples[i].getParentId() != null) menu.setParent(itemid, examples[i].getParentId());
      } else if (examples[i] instanceof RedirctItem) {
        RedirctItem redirect = (RedirctItem) examples[i];
        redirects.put(redirect.getExampleId(), redirect.redirectid);
      }

    // Expand the menu
    for (int i = 0; i < examples.length; i++) {
      if (examples[i].getParentId() == null)
        menu.expandItemsRecursively(examples[i].getExampleId());

      if (examples[i].isCollapsed()) menu.collapseItem(examples[i].getExampleId());

      if (menu.getChildren(examples[i].getExampleId()) == null)
        menu.setChildrenAllowed(examples[i].getExampleId(), false);
    }

    // Set selected example as given in the URI fragment
    final UriFragmentUtility urifu = new UriFragmentUtility();
    urifu.addListener(
        new FragmentChangedListener() {
          private static final long serialVersionUID = -6588416218607827834L;

          public void fragmentChanged(FragmentChangedEvent source) {
            String fragment = source.getUriFragmentUtility().getFragment();
            if (fragment != null) {
              // Handle redirection
              while (redirects.containsKey(fragment)) fragment = redirects.get(fragment);

              menu.setValue(fragment);

              // Open the tree nodes leading to the example
              for (Object parent = menu.getParent(fragment);
                  parent != null;
                  parent = menu.getParent(parent)) menu.expandItem(parent);
            }
          }
        });
    mainLayout.addComponent(urifu);

    // Handle menu selection
    menu.addListener(
        new Property.ValueChangeListener() {
          private static final long serialVersionUID = 8236533959795019956L;

          public void valueChange(ValueChangeEvent event) {
            viewpanel.removeAllComponents();

            String selection = (String) event.getProperty().getValue();

            // Find the example
            CaptionedExampleItem exampleItem = exampleitems.get(selection);
            if (selection != null && exampleItem == null)
              main.showNotification("Invalid item " + selection);
            else if (exampleItem != null) {
              if (exampleItem.getClass().isAssignableFrom(ExampleCtgr.class)) {
                if (menu.hasChildren(exampleItem.getExampleId())) {
                  menu.select((String) menu.getChildren(exampleItem.getExampleId()).toArray()[0]);
                }
              } else { // A leaf
                BookExample example = (BookExample) exampleItem;

                // Load unless already loaded
                WebApplicationContext ctx = (WebApplicationContext) getContext();
                example.loadExample(ctx.getBaseDirectory());

                if (example.getDescription() != null) {
                  Label descLabel = new Label(example.getDescription(), Label.CONTENT_XHTML);
                  descLabel.addStyleName("example-description");
                  viewpanel.addComponent(descLabel);
                }

                // The actual example component
                viewpanel.addComponent(example.createInstance());

                // Java sources on the left, CSS on the right
                HorizontalLayout horizontalOrder = new HorizontalLayout();
                horizontalOrder.addStyleName("sourcecontainer");
                horizontalOrder.setSpacing(true);
                horizontalOrder.setMargin(true);

                Panel bookRefs = null;
                Panel forumLinks = null;
                Panel kbRefs = null;

                List<SourceFragment> fragments = example.getSourceFragments();
                if (fragments != null) {
                  // Java Sources are laid out vertically
                  VerticalLayout verticalListings = new VerticalLayout();
                  verticalListings.setSizeUndefined();
                  verticalListings.setSpacing(true);
                  horizontalOrder.addComponent(verticalListings);

                  // Find the widest source fragment
                  int widestIndex = 0;
                  int widestWidth = 0;
                  for (int fragmentNum = 0; fragmentNum < fragments.size(); fragmentNum++)
                    if (fragments.get(fragmentNum).getSrcWidth() > widestWidth) {
                      widestIndex = fragmentNum;
                      widestWidth = fragments.get(fragmentNum).getSrcWidth();
                    }
                  System.out.println("Widest listing: " + widestIndex + " which is " + widestWidth);

                  for (int fragmentNum = 0; fragmentNum < fragments.size(); fragmentNum++) {
                    SourceFragment fragment = fragments.get(fragmentNum);

                    // Have caption only in the beginning of the listings
                    String listingCaption = fragmentNum == 0 ? "Source Code" : "";

                    String srcurl =
                        "http://dev.vaadin.com/browser/doc/book-examples/trunk/src"
                            + fragment.getSrcName();
                    SourceListing listing = new SourceListing(listingCaption, srcurl, fragment);
                    verticalListings.addComponent(listing);

                    // Use the width of the widest listing for all listings
                    if (fragmentNum == widestIndex) listing.setWidth(Sizeable.SIZE_UNDEFINED, 0);
                    else listing.setWidth("100%");

                    if (!fragment.getBookRefs().isEmpty()) {
                      bookRefs = new Panel("Book References");
                      bookRefs.setSizeUndefined();
                      for (Iterator<String> iter = fragment.getBookRefs().iterator();
                          iter.hasNext(); ) {
                        String ref = iter.next();
                        int hashPos = ref.indexOf('#');
                        String refFragment = "";
                        if (hashPos != -1) {
                          refFragment = "#" + ref.replace('#', '.');
                          ref = ref.substring(0, hashPos);
                        }
                        String bookUrl =
                            "http://vaadin.com/book/-/page/" + ref + ".html" + refFragment;
                        Link link = new Link(bookUrl, new ExternalResource(bookUrl));
                        link.setTargetName("_new");
                        bookRefs.addComponent(link);
                      }
                    }

                    if (!fragment.getForumLinks().isEmpty()) {
                      forumLinks = new Panel("Forum Messages");
                      forumLinks.setSizeUndefined();
                      for (Iterator<String> iter = fragment.getForumLinks().iterator();
                          iter.hasNext(); ) {
                        String url = iter.next();
                        Link link = new Link(url, new ExternalResource(url));
                        link.setTargetName("_new");
                        forumLinks.addComponent(link);
                      }
                    }

                    if (!fragment.getKbRefs().isEmpty()) {
                      kbRefs = new Panel("Pro Account Knowledge Base Articles");
                      kbRefs.setSizeUndefined();
                      for (Iterator<SourceFragment.Ref> iter = fragment.getKbRefs().iterator();
                          iter.hasNext(); ) {
                        SourceFragment.Ref ref = iter.next();
                        String url = "http://vaadin.com/knowledge-base#" + ref.ref;
                        Link link = new Link(ref.caption, new ExternalResource(url));
                        link.setTargetName("_new");
                        forumLinks.addComponent(link);
                      }
                    }
                  }
                }

                // Show associated CSS
                if (example.getCssFragments() != null && example.getCssFragments().size() > 0) {
                  SourceFragment csscode = example.getCssFragments().get(0);
                  String srcurl =
                      "http://dev.vaadin.com/browser/doc/book-examples/trunk/WebContent/VAADIN/themes/book-examples/styles.css";
                  horizontalOrder.addComponent(new SourceListing("CSS Code", srcurl, csscode));
                }

                if (horizontalOrder.getComponentIterator().hasNext())
                  viewpanel.addComponent(horizontalOrder);
                if (bookRefs != null) viewpanel.addComponent(bookRefs);
                if (forumLinks != null) viewpanel.addComponent(forumLinks);
                if (kbRefs != null) viewpanel.addComponent(kbRefs);

                urifu.setFragment(example.getExampleId());
              }
            }
          }
        });

    Tree.ItemStyleGenerator itemStyleGenerator =
        new Tree.ItemStyleGenerator() {
          private static final long serialVersionUID = -3231268865512947125L;

          public String getStyle(Object itemId) {
            // Chapter title items do not contain a period
            if (!((String) itemId).contains(".")) return "chaptertitle";
            return null;
          }
        };
    menu.setItemStyleGenerator(itemStyleGenerator);
  }
  @Override
  protected void setup() {

    HorizontalLayout h = new HorizontalLayout();
    addComponent(h);

    Table table = new Table();
    table.addContainerProperty("Column 1", String.class, "Row");
    table.setDragMode(TableDragMode.ROW);

    table.addItem("Row 1");
    table.addItem("Row 2");
    table.addItem("Row 3");
    table.addItem("Row 4");
    table.addItem("Row 5");
    table.addItem("Row 6");
    table.addItem("Row 7");

    h.addComponent(table);

    final Tree tree = new Tree();
    tree.setDropHandler(
        new DropHandler() {

          public AcceptCriterion getAcceptCriterion() {
            return TargetItemAllowsChildren.get();
          }

          public void drop(DragAndDropEvent dropEvent) {
            // criteria verify that this is safe
            DataBoundTransferable t = (DataBoundTransferable) dropEvent.getTransferable();
            Container sourceContainer = t.getSourceContainer();
            Object sourceItemId = t.getItemId();
            System.out.println(sourceItemId);

            AbstractSelectTargetDetails dropData =
                ((AbstractSelectTargetDetails) dropEvent.getTargetDetails());
            Object targetItemId = dropData.getItemIdOver();

            // move item from table to category'
            tree.addItem(sourceItemId);
            tree.setParent(sourceItemId, targetItemId);
            tree.setChildrenAllowed(sourceItemId, false);
            sourceContainer.removeItem(sourceItemId);
          }
        });

    tree.addItem("Item 1");
    tree.addItem("Item 11");
    tree.setChildrenAllowed("Item 11", false);
    tree.setParent("Item 11", "Item 1");
    tree.addItem("Item 12");
    tree.setChildrenAllowed("Item 12", false);
    tree.setParent("Item 12", "Item 1");
    tree.addItem("Item 13");
    tree.setChildrenAllowed("Item 13", false);
    tree.setParent("Item 13", "Item 1");

    tree.addItem("Item 2");
    tree.addItem("Item 21");
    tree.setChildrenAllowed("Item 21", false);
    tree.setParent("Item 21", "Item 2");
    tree.addItem("Item 22");
    tree.setChildrenAllowed("Item 22", false);
    tree.setParent("Item 22", "Item 2");
    tree.addItem("Item 23");
    tree.setChildrenAllowed("Item 23", false);
    tree.setParent("Item 23", "Item 2");

    tree.addItem("Item 3");
    tree.addItem("Item 31");
    tree.setChildrenAllowed("Item 31", false);
    tree.setParent("Item 31", "Item 3");
    tree.addItem("Item 32");
    tree.setChildrenAllowed("Item 32", false);
    tree.setParent("Item 32", "Item 3");
    tree.addItem("Item 33");
    tree.setChildrenAllowed("Item 33", false);
    tree.setParent("Item 33", "Item 3");

    tree.expandItemsRecursively("Item 1");
    tree.expandItemsRecursively("Item 2");
    tree.expandItemsRecursively("Item 3");

    h.addComponent(tree);
  }
Ejemplo n.º 6
0
  @Override
  protected void setup() {
    instance = this; // Note, test only works with single app per server if
    // get()
    // not converted to thread local

    sp = new HorizontalSplitPanel();
    sp.setSplitPosition(20);
    CssLayout l = new CssLayout();
    sp.setFirstComponent(l);

    tree1 = new Tree("Volume 1");
    tree1.setImmediate(true);

    fs1 = new BeanItemContainer<File>(File.class);
    tree1.setContainerDataSource(fs1);
    for (int i = 0; i < files.length; i++) {
      fs1.addBean(files[i]);
      if (files[i] instanceof Folder) {
        tree1.setChildrenAllowed(files[i], true);
      } else {
        tree1.setChildrenAllowed(files[i], false);
      }
      if (i >= files.length / 2) {
        tree1.setParent(files[i], files[i - files.length / 2]);
      }
    }
    tree1.setItemCaptionPropertyId("name");
    tree1.setItemIconPropertyId("icon");

    tree1.setDragMode(TreeDragMode.NODE);

    DropHandler dropHandler =
        new DropHandler() {
          @Override
          public AcceptCriterion getAcceptCriterion() {
            return AcceptAll.get();
          }

          @Override
          public void drop(DragAndDropEvent dropEvent) {
            File file = null;
            Folder folder = null;
            TreeTargetDetails dropTargetData = (TreeTargetDetails) dropEvent.getTargetDetails();
            folder = (Folder) dropTargetData.getItemIdInto();
            if (dropEvent.getTransferable() instanceof DataBoundTransferable) {
              DataBoundTransferable transferable =
                  (DataBoundTransferable) dropEvent.getTransferable();
              file = (File) transferable.getItemId();
            } else if (dropEvent.getTransferable().getSourceComponent() instanceof FileIcon) {
              FileIcon draggedIcon = (FileIcon) dropEvent.getTransferable().getSourceComponent();
              file = draggedIcon.file;
            }
            setParent(file, folder);
          }
        };

    tree1.setDropHandler(dropHandler);

    Handler actionHandler =
        new Handler() {

          private Action[] actions = new Action[] {new Action("Remove")};

          @Override
          public void handleAction(Action action, Object sender, Object target) {
            ContainerHierarchicalWrapper containerDataSource =
                (ContainerHierarchicalWrapper) tree1.getContainerDataSource();
            containerDataSource.removeItemRecursively(target);
          }

          @Override
          public Action[] getActions(Object target, Object sender) {
            return actions;
          }
        };
    tree1.addActionHandler(actionHandler);

    tree1.addListener(
        new Property.ValueChangeListener() {
          @Override
          public void valueChange(ValueChangeEvent event) {
            Object value = event.getProperty().getValue();
            if (value != null && !(value instanceof Folder)) {
              value = tree1.getParent(value);
            }
            FolderView folderView = FolderView.get((Folder) value);
            sp.setSecondComponent(folderView);
            folderView.reload();
          }
        });

    l.addComponent(tree1);

    sp.setSecondComponent(FolderView.get(null));

    getLayout().setSizeFull();
    getLayout().addComponent(sp);
    TestUtils.injectCSS(
        getLayout().getUI(),
        ""
            + ".v-tree .v-icon {height:16px;} "
            + ".v-tree-node-caption-drag-top {/*border-top: none;*/} "
            + ".v-tree-node-caption-drag-bottom {border-bottom: none ;} "
            + ".v-tree-node-caption-drag-center {background-color: transparent;}"
            + ".v-tree-node-caption-dragfolder { background-color: cyan;} ");
  }
Ejemplo n.º 7
0
  public void buttonClick(ClickEvent event) {
    if (event.getButton() == createButton) {

      TestSession queriedSession = null;
      String wrongTitle = "";

      try {
        //						form.enableValidationMessages();
        //					title.setValidationVisible(true);

        // commit the fieldgroup
        binder.commit();

        // check SESSION title doesnt exist for THIS SESSION
        int id = 0;
        boolean titleOK = true;
        id = newSessionItem.getBean().getId(); // testsession.getId();
        // System.out.println("parentCase.getSessions() : " + parentcase.getSessions());
        for (TestSession s : parentcase.getSessions()) { // sessions.getItemIds()
          // System.out.println("Existing title -> new title : " + s.getTitle() + "->" +
          // testsession.getTitle());
          // System.out.println("Existing id -> new id : " + s.getId() + "->" + id);
          if (s.getTitle().equals(testsession.getTitle()) && !(s.getId() == id)) {
            testsession.setTitle(prevTitle);
            if (clonemode != true && editmode == true) {
              sessions.addEntity(testsession);
            }
            wrongTitle = s.getTitle();

            titleOK = false;
            break;
          }
        }

        if (titleOK == true) {
          // System.out.println("TITLE WAS FINE. EDITING");

          // add NEW bean object to db through jpa container
          if (editmode == false && (clonemode == false)) {

            // add to container
            sessions.addEntity(newSessionItem.getBean()); // jpa container

            // add created item to tree (after retrieving db generated id)
            EntityManager em =
                Persistence.createEntityManagerFactory("mbpet").createEntityManager();
            Query query =
                em.createQuery(
                    "SELECT OBJECT(t) FROM TestSession t WHERE t.title = :title AND t.parentcase = :parentcase");
            //		            query.setParameter("title", newsession.getTitle());
            query.setParameter("title", testsession.getTitle());
            query.setParameter("parentcase", testsession.getParentcase()); // MainView.sessionUser
            queriedSession = (TestSession) query.getSingleResult();
            //				            queriedSession = (TestSession) query.setParameter("title",
            // testsession.getTitle()).getSingleResult();
            // System.out.println("the generated id is: " + queriedSession.getId());
            id = queriedSession.getId(); // here is the id we need for tree

            // create session directory for test and reports
            new FileSystemUtils()
                .createSessionTestDir(
                    testsession.getParentcase().getOwner().getUsername(),
                    testsession.getParentcase().getTitle(),
                    testsession.getTitle());

            // create default parameters object
            new ParametersEditor(sessions.getItem(id).getEntity());

            // create empty adapter object
            new AdapterEditor(sessions.getItem(id).getEntity());

            // create empty adapterXML object
            new AdapterXMLEditor(sessions.getItem(id).getEntity());

            // create default models
            ModelUtils modelUtils = new ModelUtils();
            modelUtils.createDefaultModel(
                "user_types", sessions.getItem(id).getEntity()); // currmodel.getParentsession(),
            modelUtils.createDefaultModel(
                "normal_user", sessions.getItem(id).getEntity()); // currmodel.getParentsession(),

            // add to tree in right order
            if (tree.hasChildren(parentcase.getId())) {
              sortAddToTree(id);
            } else {
              tree.addItem(id);
              tree.setParent(id, parentcase.getId());
              tree.setChildrenAllowed(id, false);
              tree.setItemCaption(
                  id, sessions.getItem(id).getEntity().getTitle()); // newsession.getTitle()
              tree.expandItem(parentcase.getId());
              tree.select(id);
            }

            // update parent Case to add Session to testCase List<Session> sessions
            parentcase.addSession(queriedSession);
            testcases.addEntity(parentcase);
            //              	  	List<TestSession> listofsessions = parentCase.getSessions();
            //              	  	listofsessions.add(queriedSession);
            //	//sessions.getItem(id).getEntity()
            //              	  	parentCase.setSessions(listofsessions);

            //									System.out.println("WHAT IS NEW LIST OF SESSIONS: "
            //													+ parentcase.getSessions()); // testing purposes
            //									for (TestSession s : parentcase.getSessions()) {
            //										System.out.println(s.getId() + " - "
            //												+ s.getTitle()); // testing purposes
            //									}

          } else if (editmode == true) {
            // EDIT existing object

            //								// commit the fieldgroup
            //								binder.commit();

            // 1 UPDATE parentcase reference
            parentcase.updateSessionData(sessions.getItem(testsession.getId()).getEntity());

            // System.out.println("Test session is now: " + testsession.getTitle());

            // 2 UPDATE container
            sessions.addEntity(newSessionItem.getBean());
            // System.out.println("Entity is now: " +
            // sessions.getItem(testsession.getId()).getEntity().getTitle());

            // 3 UPDATE tree title
            tree.setItemCaption(
                testsession.getId(), sessions.getItem(testsession.getId()).getEntity().getTitle());

            // 4. UPDATE models (maybe not necessary)
            //
            //	ModelEditorTable.modelsTable.setContainerDataSource(ModelEditorTable.modelsTable.getContainerDataSource());
            //			              	  	for (Model m : testsession.getModels()) {
            //
            //	m.setParentsession(sessions.getItem(testsession.getId()).getEntity());
            //			              	  		System.out.println("Sessions' model's session title: " +
            // m.getParentsession().getTitle());
            ////
            //	m.updateSessionData(sessions.getItem(testsession.getId()).getEntity());
            //			              	  	}

            // edit session directory for test and reports
            if (!prevTitle.equals(testsession.getTitle())) {
              new FileSystemUtils()
                  .renameSessionDir(
                      testsession.getParentcase().getOwner().getUsername(),
                      testsession.getParentcase().getTitle(),
                      prevTitle,
                      testsession.getTitle());
            }

            //			              	  	// update parameters and adapter ?
            // System.out.println("Sessions' params's session title: " +
            // testsession.getParameters().getOwnersession().getTitle());
            // System.out.println("Sessions' adapter session title: " +
            // testsession.getAdapter().getOwnersession().getTitle());
            // System.out.println("Sessions' adapterXML session title: " +
            // testsession.getAdapterXML().getOwnersession().getTitle());

            id = testsession.getId();

          } else if (clonemode == true) {
            // CLONE
            // System.out.println("\n\nWE ARE IN CLONE MODE!!!!!!!!!\n\n");

            //							TestSession clone = newSessionItem.getBean();
            //								// 1 commit the fieldgroup
            //								binder.commit();

            // 2 add to container
            sessions.addEntity(newSessionItem.getBean()); // jpa container

            // 3 retrieving db generated id
            EntityManager em =
                Persistence.createEntityManagerFactory("mbpet").createEntityManager();
            Query query =
                em.createQuery("SELECT OBJECT(t) FROM TestSession t WHERE t.title = :title");
            //		            query.setParameter("title", newsession.getTitle());
            queriedSession =
                (TestSession) query.setParameter("title", testsession.getTitle()).getSingleResult();
            // System.out.println("the generated id is: " + queriedSession.getId());
            id = queriedSession.getId(); // here is the id we need for tree

            // 4 clone models
            EntityManager em2 =
                Persistence.createEntityManagerFactory("mbpet").createEntityManager();
            Query query2 =
                em2.createQuery(
                    "SELECT OBJECT(m) FROM Model m WHERE m.title = :title AND m.parentsession = :parentsession");
            for (Model m : subject.getModels()) {
              // copy over model values
              Model newmodel =
                  new Model(m.getTitle(), queriedSession, m.getParentsut()); // "(clone) " +
              newmodel.setDotschema(m.getDotschema());

              // add to container
              models.addEntity(newmodel); // jpa container

              // retrieve generated id from db
              query2.setParameter("title", newmodel.getTitle());
              query2.setParameter("parentsession", queriedSession);
              Model queriedModel = (Model) query2.getSingleResult();
              // System.out.println("the generated MODEL id is: " + queriedModel.getId() + " of
              // session ->" + queriedSession.getId());

              // update parent Case to add Session to testCase List<Session> sessions
              parentcase.addModel(queriedModel);
              queriedSession.addModel(queriedModel);

              //						            //write model to disk
              //						            FileSystemUtils fileUtils = new FileSystemUtils();
              //						            fileUtils.writeModelToDisk(
              //						            		parentcase.getOwner().getUsername(),
              //						            		parentcase.getTitle(),
              //						            		queriedSession.getTitle(),
              //						            		queriedSession.getParameters().getModels_folder(),
              //						            		queriedModel);
            }
            sessions.addEntity(queriedSession);

            // 5 clone parameters
            String cloneParams =
                "Fill in parameters for Test Session '" + queriedSession.getTitle() + "'";
            if (!(subject.getParameters().getSettings_file()
                == null)) { // || !(testsession.getParameters().getSettings_file().equals(""))
              cloneParams = subject.getParameters().getSettings_file();
            }
            //					            System.out.println("\n\n the cloned parameters are:\n" +
            //					            		cloneParams + "\n\n");
            new ParametersEditor(queriedSession, cloneParams);

            // 6 clone adapter.py
            String cloneAdapter =
                "Fill in adapter for Test Session '" + queriedSession.getTitle() + "'";
            if (!(subject.getAdapter().getAdapter_file() == null)
                || !(subject
                    .getAdapter()
                    .getAdapter_file()
                    .equals(
                        ""))) { // || !(testsession.getParameters().getSettings_file().equals(""))
              cloneAdapter = subject.getAdapter().getAdapter_file();
            }
            //					            System.out.println("\n\n the cloned adapter is:\n" +
            //					            		cloneAdapter + "\n\n");
            new AdapterEditor(queriedSession, cloneAdapter);

            // 7 clone adapter.xml
            String cloneAdapterXML =
                "Fill in adapterXML for Test Session '" + queriedSession.getTitle() + "'";
            if (!(subject.getAdapterXML().getAdapterXML_file() == null)
                || !(subject
                    .getAdapterXML()
                    .getAdapterXML_file()
                    .equals(
                        ""))) { // || !(testsession.getParameters().getSettings_file().equals(""))
              cloneAdapterXML = subject.getAdapterXML().getAdapterXML_file();
            }
            //					            System.out.println("\n\n the cloned adapterXML is:\n" +
            //					            		cloneAdapterXML + "\n\n");
            new AdapterXMLEditor(queriedSession, cloneAdapterXML);

            // 8 write models to disk
            FileSystemUtils fileUtils = new FileSystemUtils();
            fileUtils.writeModelsToDisk(
                parentcase.getOwner().getUsername(),
                parentcase.getTitle(),
                queriedSession.getTitle(),
                queriedSession.getParameters().getModels_folder(),
                subject.getModels());

            // 9 add to tree in right order
            if (tree.hasChildren(parentcase.getId())) {
              sortAddToTree(id);
            } else {
              tree.addItem(id);
              tree.setParent(id, parentcase.getId());
              tree.setChildrenAllowed(id, false);
              tree.setItemCaption(
                  id, sessions.getItem(id).getEntity().getTitle()); // newsession.getTitle()
              tree.expandItem(parentcase.getId());
              tree.select(id);
            }

            // 10 update parent Case to add Session to testCase List<Session> sessions
            parentcase.addSession(queriedSession);
            //              	  	List<TestSession> listofsessions = parentCase.getSessions();
            //              	  	listofsessions.add(queriedSession);
            //	//sessions.getItem(id).getEntity()
            //              	  	parentCase.setSessions(listofsessions);

            // 9 create session directory for test and reports
            new FileSystemUtils()
                .createSessionTestDir(
                    queriedSession.getParentcase().getOwner().getUsername(),
                    queriedSession.getParentcase().getTitle(),
                    queriedSession.getTitle());

            //				            	System.out.println("WHAT IS NEW LIST OF SESSIONS: " +
            // parentCase.getSessions()); // testing purposes
            //				            	for (TestSession s : parentCase.getSessions()) {
            //					            	System.out.println(s.getId() + " - " + s.getTitle()); // testing
            // purposes
            //				            	}
          }

          //			            	System.out.println("WHAT IS NEW LIST OF SESSIONS: " +
          // parentCase.getSessions()); // testing purposes
          //			            	for (TestSession s : parentCase.getSessions()) {
          //				            	System.out.println(s.getId() + " - " + s.getTitle()); // testing
          // purposes
          //			            	}

          if (clonemode == true && navToCasePage == true) {
            confirmNotification(queriedSession.getTitle(), "was created");
            close();

          } else if (clonemode == true && navToCasePage == false) {
            confirmNotification(queriedSession.getTitle(), "was CLONED");
            getUI()
                .getNavigator()
                .navigateTo(
                    MainView.NAME
                        + "/"
                        + parentcase.getTitle()
                        + "/"
                        + queriedSession.getTitle()
                        + "id="
                        + queriedSession
                            .getId()); // sessions.getItem(id).getEntity()
            close();

          } else if (navToCasePage == true && editmode == false) {
            // 4 UPDATE table title
            table.select(newSessionItem.getBean().getId()); // (testsession.getId());
            confirmNotification(testsession.getTitle(), "was created");
            close();

            //		            		getUI().getNavigator()
            //		            			.navigateTo(MainView.NAME + "/" +
            //		            				parentCase.getTitle());		//sessions.getItem(id).getEntity()

          } else if (navToCasePage == true && editmode == true) {
            getUI()
                .getNavigator()
                .navigateTo(
                    MainView.NAME
                        + "/"
                        + parentcase.getTitle()
                        + "-sut="
                        + parentcase.getId()); // sessions.getItem(id).getEntity()		            	
            confirmNotification(testsession.getTitle(), "was edited");
            close();

          } else if (editmode == true && navToCasePage == false) {
            getUI()
                .getNavigator()
                .navigateTo(
                    MainView.NAME
                        + "/"
                        + parentcase.getTitle()
                        + "/"
                        + newSessionItem.getBean().getTitle()
                        + "id="
                        + newSessionItem
                            .getBean()
                            .getId()); // testsession.getTitle() sessions.getItem(id).getEntity()
          } else {
            getUI()
                .getNavigator()
                .navigateTo(
                    MainView.NAME
                        + "/"
                        + parentcase.getTitle()
                        + "/"
                        + queriedSession.getTitle()
                        + "id="
                        + queriedSession
                            .getId()); // testsession.getTitle() sessions.getItem(id).getEntity()
          }

          // title already existed
        } else {
          // System.out.println("title was NOT fine.");
          //							testsession = sessions.getItem(id).getEntity();
          //							System.out.println("db session is: " + testsession.getId() + " " +
          // testsession.getTitle());

          if (editmode == false && clonemode == false) {
            binder.discard();
            Notification.show(
                "The title '"
                    + wrongTitle
                    + "' already exists for this SUT. Please rename this session.",
                Type.ERROR_MESSAGE); // testsession.getTitle()
            UI.getCurrent().addWindow(new TestSessionEditor(tree, table, parentcase, true));
          } else if (editmode == true) {
            binder.discard();
            Notification.show(
                "The title '"
                    + wrongTitle
                    + "' already exists for this SUT. Please rename this session.",
                Type.ERROR_MESSAGE);
            if (navToCasePage == true) {
              UI.getCurrent()
                  .addWindow(
                      new TestSessionEditor(
                          tree,
                          id,
                          parentcase,
                          table)); // sessions.getItem(testsession.getId()).getEntity().getId()
            } else {
              UI.getCurrent().addWindow(new TestSessionEditor(tree, id, parentcase));
            }

          } else if (clonemode == true) {
            binder.discard();
            Notification.show(
                "The title '"
                    + wrongTitle
                    + "' already exists for this SUT. Please rename this session.",
                Type.ERROR_MESSAGE);
            UI.getCurrent()
                .addWindow(
                    new TestSessionEditor(
                        tree,
                        subject.getId(), // testsession sessions.getItem(
                        parentcase,
                        table,
                        true));
          }
        }

      } catch (CommitException e) {
        binder.discard();
        Notification.show("'Title' cannot be Empty. Please try again.", Type.WARNING_MESSAGE);
        UI.getCurrent().addWindow(new TestSessionEditor(tree, parentcase, true));
      } catch (NonUniqueResultException e) {
        e.printStackTrace();
        binder.discard();
        Notification.show(
            "The title '"
                + testsession.getTitle()
                + "' already exists for this SUT. Please rename this session.",
            Type.ERROR_MESSAGE);
        UI.getCurrent().addWindow(new TestSessionEditor(tree, parentcase, true));
      }
      //					catch (NonUniqueResultException e) {
      //						binder.discard();
      //						Notification.show("'Title' must be a unique name.\n'" +
      //											queriedSession.getTitle() +
      //											"' already exists.\n\nPlease try again.", Type.WARNING_MESSAGE);
      //						UI.getCurrent().addWindow(new TestSessionEditor(tree, parentCase));
      //					}

    } else if (event.getButton() == cancelButton) {
      binder.discard();
    }
    //	        binder.clear();
    //	        form.disableValidationMessages();
    //	        setTreeItemsExpanded();

    close(); // Close the sub-window
  }