Example usage for org.apache.wicket.model AbstractReadOnlyModel AbstractReadOnlyModel

List of usage examples for org.apache.wicket.model AbstractReadOnlyModel AbstractReadOnlyModel

Introduction

In this page you can find the example usage for org.apache.wicket.model AbstractReadOnlyModel AbstractReadOnlyModel.

Prototype

AbstractReadOnlyModel

Source Link

Usage

From source file:com.visural.stereotyped.ui.base.BasePage.java

License:Mozilla Public License

public BasePage(PageParameters params) {
    super(params);
    add(new WebMarkupContainer("favicon1")
            .add(new SimpleAttributeModifier("href", urlFor(new FaviconRef()).toString())));
    add(new WebMarkupContainer("favicon2")
            .add(new SimpleAttributeModifier("href", urlFor(new FaviconRef()).toString())));

    add(new BookmarkablePageLink("homeLink", LandingPage.class)
            .add(new Image("logo", new ResourceReference(BasePage.class, "logo.png"))));
    add(new Label("version", Version.getAsString()));
    add(new Label("headTitle", new AbstractReadOnlyModel() {
        @Override/*from  w  w w .j av a2  s  .  c  o m*/
        public Object getObject() {
            return getPageTitle() + " - Stereotyped";
        }
    }));
    add(new Label("pageTitle", new AbstractReadOnlyModel() {
        @Override
        public Object getObject() {
            return getPageTitle();
        }
    }));
    if (config.isFirstRun() && !this.getClass().equals(ConfigPage.class)) {
        setRedirect(true);
        setResponsePage(ConfigPage.class);
    }
    WebMarkupContainer loggedIn = new WebMarkupContainer("loggedIn");
    add(loggedIn);
    if (userService.isAuthenticated()) {
        loggedIn.add(new BookmarkablePageLink("myprofile", EditUserPage.class,
                PageParamFactory.get(StdParam.LOAD_ID, userService.getCurrentUser())));
        loggedIn.add(new Label("currentUser", userService.getCurrentUser()));
        loggedIn.add(new SecureAjaxLink("adminLink") {

            @Override
            public IPrivilege getRenderPrivilege() {
                return Privilege.ADMINISTRATOR;
            }

            @Override
            public void onClick(AjaxRequestTarget target) {
                setResponsePage(MainAdminPage.class, PageParameters.NULL);
            }

        });
        loggedIn.add(new Link("logout") {

            @Override
            public void onClick() {
                userService.logout();
                setRedirect(true);
                setResponsePage(Application.get().getHomePage());
            }

        });
    } else {
        loggedIn.setVisible(false);
    }
}

From source file:com.visural.stereotyped.ui.LandingPage.java

License:Mozilla Public License

public LandingPage(PageParameters params) {
    super(params);
    stereotypes = service.getStereotypes();

    add(new FeedbackPanel("feedback"));

    IModel<UUID> selectedModel = new IModel<UUID>() {
        public UUID getObject() {
            if (selected != null && service.read(selected) != null) {
                return selected;
            } else {
                return null;
            }/*from w  ww.  j a v a 2 s  .  c o  m*/
        }

        public void setObject(UUID object) {
            selected = object;
        }

        public void detach() {
        }
    };
    final StereotypeManagePanel manage = new StereotypeManagePanel("recordDetails", selectedModel);
    add(manage);

    add(new StereotypeListPanel("recentlySaved", new Model("Recently Saved Files"),
            new AbstractReadOnlyModel<List<UUID>>() {
                @Override
                public List<UUID> getObject() {
                    return userService.getUser(userService.getCurrentUser()).getUserLists()
                            .get(UserListType.RECENTLY_SAVED);
                }
            }, manage));
    add(new StereotypeListPanel("recentlyViewed", new Model("Recently Viewed Files"),
            new AbstractReadOnlyModel<List<UUID>>() {
                @Override
                public List<UUID> getObject() {
                    return userService.getUser(userService.getCurrentUser()).getUserLists()
                            .get(UserListType.RECENTLY_VIEWED);
                }
            }, manage));

    add(new NewForm("newForm"));

    add(ignoreForm = new IgnoreForm("ignoreForm"));

    tagWrap = new WebMarkupContainer("tagWrap");
    tagWrap.setOutputMarkupId(true);
    add(tagWrap);
    final RefreshingView<String> tags = new RefreshingView<String>("tag") {

        @Override
        protected Iterator<IModel<String>> getItemModels() {
            List<String> tags = new ArrayList<String>();
            tags.addAll(service.listAllByTag(sessionService.getSessionBean().isShowFilesFromOtherUsers(),
                    sessionService.getSessionBean().isShowArchived()).keySet());
            Collections.sort(tags);
            return WrapCollectionToModelCollection.get(tags).iterator();
        }

        @Override
        protected void populateItem(Item<String> item) {
            final String tag = item.getModelObject();
            final boolean isIgnored = Sets
                    .newHashSet(sessionService.getSessionBean().getIgnoreTags().split(" ")).contains(tag);
            item.setOutputMarkupId(true);
            item.add(new AjaxLink("title") {
                @Override
                public void onClick(AjaxRequestTarget target) {
                    Set<String> tags = Sets
                            .newHashSet(sessionService.getSessionBean().getIgnoreTags().split(" "));
                    if (isIgnored) {
                        tags.remove(tag);
                    } else {
                        tags.add(tag);
                    }
                    sessionService.getSessionBean().setIgnoreTags(StringUtil.delimitObjectsToString(" ", tags));
                    target.addComponent(tagWrap);
                }

                @Override
                protected void onComponentTagBody(MarkupStream markupStream, ComponentTag openTag) {
                    replaceComponentTagBody(markupStream, openTag, tag);
                }

            });

            RefreshingView<UUID> loadList = new RefreshingView<UUID>("itemRow") {
                @Override
                protected Iterator<IModel<UUID>> getItemModels() {
                    List<UUID> items = new ArrayList<UUID>();
                    items.addAll(
                            service.listAllByTag(sessionService.getSessionBean().isShowFilesFromOtherUsers(),
                                    sessionService.getSessionBean().isShowArchived()).get(tag));
                    Collections.sort(items, new Comparator<UUID>() {

                        public int compare(UUID o1, UUID o2) {
                            return service.read(o1).getName().compareTo(service.read(o2).getName());
                        }

                    });
                    return WrapCollectionToModelCollection.get(items).iterator();
                }

                @Override
                protected void populateItem(final Item<UUID> item) {
                    item.setOutputMarkupId(true);
                    Stereotype st = service.read(item.getModelObject());
                    final String stName = st.getName();
                    final AjaxLink desc = new AjaxLink("itemOpen") {
                        @Override
                        public void onClick(AjaxRequestTarget target) {
                            manage.select(target, item.getModelObject());
                        }
                    };
                    desc.add(new Image("icon", new IconReference(Icon.PROPERTIES)));
                    item.add(desc);

                    StereotypeUIMetaData meta = service.readUIMeta(item.getModelObject());
                    String userDesc = meta.getOwner()
                            .equals(sessionService.getSessionBean().getLoggedInUsername()) ? ""
                                    : "(" + meta.getOwner() + ")";
                    item.add(new Label("userDesc", userDesc));

                    WebMarkupContainer previewButton;
                    if (service.read(item.getModelObject()).getPreviewStates().isEmpty()) {
                        previewButton = new WebMarkupContainer("preview");
                        previewButton.add(new SimpleAttributeModifier("href",
                                "preview/" + StringUtil.urlEncode(item.getModelObject().toString()) + "/"));
                        item.add(previewButton);
                    } else {
                        item.add(previewButton = new AjaxLink("preview") {

                            @Override
                            public void onClick(AjaxRequestTarget target) {
                                previewStateDialog.open(target, item.getModelObject());
                            }

                        });
                    }
                    previewButton.add(new Image("icon", new IconReference(Icon.PREVIEW)));

                    item.add(new BookmarkablePageLink("itemDesc", PrototypeEditor.class,
                            new PageParameters(StdParam.LOAD_ID + "=" + item.getModelObject())) {
                        @Override
                        protected void onComponentTagBody(MarkupStream markupStream, ComponentTag openTag) {
                            replaceComponentTagBody(markupStream, openTag, StringUtil.htmlEscape(stName));
                        }
                    });
                }
            };
            if (!isIgnored) {
                item.add(loadList);
            } else {
                item.add(new WebMarkupContainer("itemRow").setVisible(false));
            }
        }
    };
    tagWrap.add(tags);
    add(previewStateDialog = new PreviewStatePreviewDialog("previewStateDialog"));
}

From source file:com.visural.stereotyped.ui.prototype.PrototypeEditor.java

License:Mozilla Public License

public PrototypeEditor(PageParameters params) {
    super(params);

    add(CSSPackageResource.getHeaderContribution(new WindowsTheme()));

    add(new HeaderContributor(new IHeaderContributor() {

        public void renderHead(IHeaderResponse response) {
            response.renderJavascript(getHeaderJS(), "header_js");
        }/*from  w  ww  .j a  v a  2 s .c om*/
    }));

    stereotypeUUIDList = new ArrayList<UUID>(stereotypeService.listAll());
    Collections.sort(stereotypeUUIDList, new Comparator<UUID>() {
        public int compare(UUID o1, UUID o2) {
            return stereotypeService.read(o1).getName().compareTo(stereotypeService.read(o2).getName());
        }
    });
    for (UUID uuid : stereotypeUUIDList) {
        stereotypeUUUIDDesc.put(uuid, stereotypeService.read(uuid).getName());
    }

    editor.setOutputMarkupId(true);
    add(editor);
    final WebMarkupContainer wrap = new WebMarkupContainer("wrap");
    editor.add(wrap.setOutputMarkupId(true));
    expert = userService.getUser(userService.getCurrentUser()).getExpertMode();
    stereotypeUUIDStr = params.getString(StdParam.LOAD_ID);
    id = UUID.fromString(stereotypeUUIDStr);
    if (stereotypeUUIDStr == null) {
        throw new IllegalArgumentException("Must provide a prototype name to load.");
    }
    userService.registerListInteraction(userService.getCurrentUser(), UserListType.RECENTLY_VIEWED, id);

    previewId = previewProvider.get().getNewPreviewerSession(stereotypeService.readUncached(id),
            new BasicHTMLResourceRenderer(stereotypeService.listAllLibraries()));

    components = new ArrayList<Class<? extends Component>>();
    List<ComponentLibrary> libs = stereotypeService.listAllLibraries();
    Stereotype s = previewProvider.get().getStereotype(previewId);
    for (ComponentLibrary lib : libs) {
        for (Class<? extends Component> com : lib.getComponents()) {
            if (s.allowComponent(lib.getJarName(), com)) {
                components.add(com);
            }
        }
    }

    EditorForm form;
    wrap.add(form = new EditorForm("mainForm"));
    prev = new PreviewerPanel("preview", previewId);
    wrap.add(prev);

    Form previewStatesForm = new Form("previewStates");
    wrap.add(previewStatesForm);
    previewStatesForm.add(new DropDownChoice("currentPreviewState", new IModel<String>() {
        public String getObject() {
            return getDynStereotype().getCurrentPreviewStateName();
        }

        public void setObject(String object) {
            if (!Function.nvl(object, "").equals(Function.nvl(getObject(), ""))) {
                if (object == null) {
                    getDynStereotype().getDefaultState().select();
                } else {
                    getDynStereotype().getPreviewStateByName(object).select();
                }
            }
        }

        public void detach() {
        }
    }, new AbstractReadOnlyModel() {
        @Override
        public Object getObject() {
            ArrayList al = new ArrayList();
            List<PreviewState> states = getDynStereotype().getPreviewStates();
            for (PreviewState ps : states) {
                al.add(ps.getName());
            }
            return al;
        }
    }).setNullValid(true).add(new AjaxFormSubmitBehavior("onchange") {
        @Override
        protected void onSubmit(AjaxRequestTarget target) {
            target.addComponent(editor);
        }

        @Override
        protected void onError(AjaxRequestTarget target) {
            target.addComponent(editor);
        }
    }));

    final Dialog addPreviewStateDialog = new Dialog("addPreviewStateDialog");
    addPreviewStateDialog.setOutputMarkupId(true);
    editor.add(addPreviewStateDialog);
    final AddPreviewStateForm addPreviewStateForm = new AddPreviewStateForm("addPreviewState",
            addPreviewStateDialog);
    addPreviewStateDialog.add(addPreviewStateForm);
    addPreviewStateDialog.add(new Label("title", new AbstractReadOnlyModel() {
        @Override
        public Object getObject() {
            return addPreviewStateForm.toCopy == null ? "Add Preview State"
                    : "Copy Preview State '" + addPreviewStateForm.toCopy.getName() + "'";
        }
    }));

    wrap.add(new AjaxLink("addPreviewState") {
        @Override
        public void onClick(AjaxRequestTarget target) {
            addPreviewStateForm.open(target);
        }
    });
    wrap.add(new AjaxLink("copyPreviewState") {
        @Override
        public boolean isVisible() {
            return getDynStereotype().getCurrentPreviewState() != null;
        }

        @Override
        public void onClick(AjaxRequestTarget target) {
            addPreviewStateForm.open(target, getDynStereotype().getCurrentPreviewState());
        }
    });
    wrap.add(new ConfirmerAjaxLink("delPreviewState") {
        @Override
        public boolean isVisible() {
            return getDynStereotype().getCurrentPreviewState() != null;
        }

        @Override
        public void onClick(AjaxRequestTarget target) {
            getDynStereotype().deletePreviewState(getDynStereotype().getCurrentPreviewState());
            target.addComponent(editor);
        }
    });

    wrap.add(new AjaxLink("refreshAll") {

        @Override
        public void onClick(AjaxRequestTarget target) {
            target.addComponent(wrap);
        }

    });
    wrap.add(new IndicateModalAjaxSubmitLink("save", form) {

        @Override
        public IPrivilege getRenderPrivilege() {
            return Privilege.currentUserHasWriteAccess(id);
        }

        @Override
        protected void onSubmit(AjaxRequestTarget target, Form<?> form) {
            target.addComponent(editor);
            Stereotype s = previewProvider.get().getStereotype(previewId);
            stereotypeService.write(s);
            getSession().info("Saved '" + s.getName() + "' successfully.");
        }
    });
    wrap.add(new IndicateModalSubmitLink("saveAndClose", form) {
        @Override
        public IPrivilege getRenderPrivilege() {
            return Privilege.currentUserHasWriteAccess(id);
        }

        @Override
        public void onSubmit() {
            Stereotype s = previewProvider.get().getStereotype(previewId);
            stereotypeService.write(s);
            getSession().info("Saved '" + s.getName() + "' successfully.");
            setResponsePage(LandingPage.class);
        }
    });
    wrap.add(new ConfirmerAjaxLink("close") {

        @Override
        public void onClick(AjaxRequestTarget target) {
            setResponsePage(LandingPage.class);
        }

    });

    wrap.add(new IndicateModalAjaxLink("fix") {

        @Override
        public void onClick(AjaxRequestTarget target) {
            target.addComponent(editor);
            Stereotype s = getDynStereotype();
            List<Slot> slots = new ArrayList<Slot>();
            recurse(s, slots);
            int fixed = 0;
            for (int n = 0; n < slots.size() - 1; n++) {
                Slot cur = slots.get(n);
                if (listHasUUID(slots.subList(n + 1, slots.size()), cur.getUuid())) {
                    cur.mutateUUID(true);
                    fixed++;
                }
            }
            getSession().info("Fixed " + fixed + " broken slots.");
        }

        private boolean listHasUUID(List<Slot> l, UUID uuid) {
            for (Slot s : l) {
                if (s.getUuid().equals(uuid)) {
                    return true;
                }
            }
            return false;
        }

        private void recurse(Component c, List<Slot> result) {
            if (c == null || c.getSlots() == null || c.getSlots().isEmpty()) {
                return;
            }
            for (Slot s : c.getSlots()) {
                recurse(s, result);
            }
        }

        private void recurse(Slot s, List<Slot> result) {
            if (s == null) {
                return;
            }
            result.add(s);
            if (s.getContent() != null && !s.getContent().isEmpty()) {
                for (Component c : s.getContent()) {
                    recurse(c, result);
                }
            }
        }
    });

    wrap.add(new WebMarkupContainer("previewWindow")
            .add(new SimpleAttributeModifier("href", prev.getPreviewURL())));
}

From source file:com.visural.stereotyped.ui.prototype.TreePanel.java

License:Mozilla Public License

public TreePanel(String id, final OperableTreeNode node) {
    super(id);/*  w  ww . j a v  a  2s  .c  o  m*/
    WebMarkupContainer container = new WebMarkupContainer("container");
    add(container);
    if (node.getComponent() != null && !Stereotype.class.isAssignableFrom(node.getComponent().getClass())) {
        container.add(new DragSource(Operation.MOVE) {
            @Override
            public void onBeforeDrop(Component drag, Transfer transfer) throws Reject {
                if (!allowDragAndDrop()) {
                    transfer.reject();
                } else {
                    transfer.setData(node);
                }
            }
        }.drag("a"));
    }
    DropTarget componentDrop = null;
    if (node.getSlot() != null
            || (node.getComponent().getSlots() != null && node.getComponent().getSlots().size() == 1)) {
        DropTarget newDt = new DropTarget(Operation.MOVE) {
            @Override
            public void onDrop(AjaxRequestTarget target, Transfer transfer, Location location) throws Reject {
                Slot slot = node.getSlot() != null ? node.getSlot() : node.getComponent().getSlots().get(0);
                OperableTreeNode otn = transfer.getData();
                if (otn != null && otn.getComponent() != null && slot.acceptComponent(otn.getComponent())) {
                    if (otn.getComponent().contains(slot)) {
                        transfer.reject(); // drop component on self or child of self
                    } else {
                        com.visural.stereotyped.core.Component com = otn.getComponent();
                        com.delete();
                        slot.addComponent(com);
                        updateTree(target);
                        invokePreviewRefresh(target);
                    }
                } else {
                    transfer.reject();
                }
            }
        };
        if (node.getSlot() != null) {
            container.add(newDt.dropCenter("a"));
        } else {
            componentDrop = newDt;
        }
    }
    if (node.getComponent() != null && !Stereotype.class.isAssignableFrom(node.getComponent().getClass())) {
        final DropTarget dtComp = componentDrop;
        DropTarget dtNew = new DropTarget(Operation.MOVE) {
            @Override
            public void onDrop(AjaxRequestTarget target, Transfer transfer, Location location) throws Reject {
                Slot slot = node.getComponent().getParentSlot();
                if (location.getAnchor().equals(Anchor.CENTER)) {
                    dtComp.onDrop(target, transfer, location);
                } else {
                    OperableTreeNode otn = transfer.getData();
                    if (otn != null && otn.getComponent() != null && slot.acceptComponent(otn.getComponent())) {
                        com.visural.stereotyped.core.Component com = otn.getComponent();
                        if (com.getUuid().equals(node.getComponent().getUuid())) {
                            transfer.reject(); // drop component next to self
                        } else if (com.contains(slot)) {
                            transfer.reject(); // drop component on self or child of self
                        } else {
                            switch (location.getAnchor()) {
                            case TOP:
                            case LEFT: {
                                com.delete();
                                int idx = slot.getContent().indexOf(node.getComponent());
                                if (idx < 0) {
                                    throw new IllegalStateException("Drop component was not in expected slot.");
                                }
                                slot.addComponent(idx, com);
                                updateTree(target);
                                invokePreviewRefresh(target);
                            }
                                break;
                            case BOTTOM:
                            case RIGHT: {
                                com.delete();
                                int idx = slot.getContent().indexOf(node.getComponent());
                                if (idx < 0) {
                                    throw new IllegalStateException("Drop component was not in expected slot.");
                                }
                                if (idx == slot.getContent().size() - 1) {
                                    slot.addComponent(com);
                                } else {
                                    slot.addComponent(idx + 1, com);
                                }
                                updateTree(target);
                                invokePreviewRefresh(target);
                            }
                                break;
                            default:
                                transfer.reject();
                            }
                        }
                    } else {
                        transfer.reject();
                    }
                }
            }
        }.dropTopAndBottom("a");
        if (componentDrop != null) {
            dtNew.dropCenter("a");
        }
        container.add(dtNew);
    }

    AjaxSubmitLink link = new AjaxSubmitLink("link") {

        @Override
        protected void onSubmit(AjaxRequestTarget target, Form<?> form) {
            select(target);
        }

        @Override
        protected void onComponentTag(ComponentTag tag) {
            super.onComponentTag(tag);
            if (isSelected()) {
                tag.put("class", "selected");
            }
            tag.put("onmouseover",
                    "doHighlight('" + ComponentRenderer.STCOM_UUID_PREFIX + node.getUuid().toString() + "');");
            tag.put("onmouseout", "removeHighlight();");
        }
    };
    container.add(link);
    if (node.getComponent() != null) {
        link.add(new Image("icon", node.getComponent().getIcon()));
        link.add(new Label("label", new AbstractReadOnlyModel() {
            @Override
            public Object getObject() {
                return node.getComponent().getName() + (node.getComponent().isHide() ? " [hidden]" : "");
            }
        }));
    } else {
        link.add(new Image("icon", new SlotIcon()));
        link.add(new Label("label", new AbstractReadOnlyModel() {
            @Override
            public Object getObject() {
                return Function.nvl(node.getSlot().getDisplayName(), node.getSlot().getName());
            }
        }));
    }

    final Slot slot = node.getSlot() != null ? node.getSlot()
            : (node.getComponent() != null && node.getComponent().getSlots() != null
                    && node.getComponent().getSlots().size() == 1 ? node.getComponent().getSlots().get(0)
                            : null);

    if (slot == null) {
        container.add(new WebMarkupContainer("addComp").setVisible(false));
    } else {
        AjaxSubmitLink addComp;
        container.add(addComp = new AjaxSubmitLink("addComp") {
            @Override
            protected void onSubmit(AjaxRequestTarget target, Form<?> form) {
                invokeAdd(target, slot);
            }
        });
        addComp.setOutputMarkupId(true);
        container.add(
                new SimpleAttributeModifier("onmouseover", "jQuery('#" + addComp.getMarkupId() + "').show();"));
        container.add(
                new SimpleAttributeModifier("onmouseout", "jQuery('#" + addComp.getMarkupId() + "').hide();"));
    }
}

From source file:com.visural.stereotyped.ui.StereotypeManagePanel.java

License:Mozilla Public License

public StereotypeManagePanel(String id, IModel<UUID> st) {
    super(id);//from ww w. ja va 2s . c  om
    this.stereotype = st;
    setOutputMarkupId(true);
    WebMarkupContainer wrap = new WebMarkupContainer("wrap") {

        @Override
        public boolean isVisible() {
            return stereotype.getObject() != null;
        }
    };
    add(wrap);
    add(previewStateDialog = new PreviewStatePreviewDialog("previewStateDialog"));

    final Label desc = new Label("itemDesc", new AbstractReadOnlyModel() {

        @Override
        public Object getObject() {
            return service.read(stereotype.getObject()).getName();
        }
    });
    wrap.add(desc);

    wrap.add(new Label("userDesc", new AbstractReadOnlyModel() {

        @Override
        public Object getObject() {
            StereotypeUIMetaData meta = service.readUIMeta(stereotype.getObject());
            return meta.getOwner().equals(userService.getCurrentUser()) ? "" : "(" + meta.getOwner() + ")";
        }
    }));

    WebMarkupContainer previewSingle = new WebMarkupContainer("previewSingle") {

        @Override
        public boolean isVisible() {
            return false;
            //return service.read(stereotype.getObject()).getPreviewStates().isEmpty();
        }

        @Override
        protected void onComponentTag(ComponentTag tag) {
            super.onComponentTag(tag);
            tag.put("href", "preview/" + StringUtil.urlEncode(stereotype.getObject().toString()) + "/");
            tag.put("target", stereotype.getObject().toString());
        }
    };
    previewSingle.add(new Image("icon", new ResourceReference(BasePage.class, "eye--arrow.png")));
    wrap.add(previewSingle);

    WebMarkupContainer previewMulti = new AjaxLink("previewMulti") {

        @Override
        public boolean isVisible() {
            return false;
            //return !service.read(stereotype.getObject()).getPreviewStates().isEmpty();
        }

        @Override
        public void onClick(AjaxRequestTarget target) {
            previewStateDialog.open(target, stereotype.getObject());
        }
    };
    previewMulti.add(new Image("icon", new ResourceReference(BasePage.class, "eye--arrow.png")));
    wrap.add(previewMulti);

    wrap.add(new WebMarkupContainer("itemOpen") {

        @Override
        protected void onComponentTag(ComponentTag tag) {
            super.onComponentTag(tag);
            tag.put("href", urlFor(PrototypeEditor.class,
                    new PageParameters(StdParam.LOAD_ID + "=" + stereotype.getObject())).toString());
        }
    }.setVisible(false));
    wrap.add(new SecureWebMarkupContainer("itemAccess") {

        @Override
        public IPrivilege getRenderPrivilege() {
            return Privilege.currentUserHasWriteAccess(stereotype.getObject());
        }

        @Override
        protected void onComponentTag(ComponentTag tag) {
            super.onComponentTag(tag);
            tag.put("href", urlFor(EditMetaPage.class,
                    new PageParameters(StdParam.LOAD_ID + "=" + stereotype.getObject())).toString());
        }
    });
    wrap.add(new AjaxLink("itemCopy") {

        @Override
        public void onClick(AjaxRequestTarget target) {
            service.copy(stereotype.getObject());
            setResponsePage(LandingPage.class);
        }
    });
    final RenameForm renameForm = new RenameForm();
    wrap.add(renameForm);
    wrap.add(new SecureAjaxLink("itemRename") {

        @Override
        public boolean isVisible() {
            return Privilege.currentUserHasWriteAccess(stereotype.getObject())
                    .isGrantedToClient(userService.getUser(userService.getCurrentUser()));
        }

        @Override
        public void onClick(AjaxRequestTarget target) {
            renameForm.show(stereotype.getObject(), service.read(stereotype.getObject()).getName());
            desc.setVisible(false);
            target.addComponent(StereotypeManagePanel.this);
        }
    });
    wrap.add(new ConfirmerLink("itemArchive") {

        @Override
        public boolean isVisible() {
            return Privilege.currentUserHasWriteAccess(stereotype.getObject())
                    .isGrantedToClient(userService.getUser(userService.getCurrentUser()));
        }

        @Override
        public String getMessageContentHTML() {
            return "Are you sure you want to archive '" + service.read(stereotype.getObject()).getName() + "'?";
        }

        @Override
        public String getOkButtonLabel() {
            return "Yes";
        }

        @Override
        public String getCancelButtonLabel() {
            return "No";
        }

        @Override
        public void onClick() {
            StereotypeUIMetaData meta = service.readUIMeta(stereotype.getObject());
            meta.getTags().add(StereotypeUIMetaData.ARCHIVE_TAG);
            service.writeUIMeta(stereotype.getObject(), meta);
        }
    });
    wrap.add(new ConfirmerLink("itemDelete") {

        @Override
        public boolean isVisible() {
            return Privilege.currentUserHasWriteAccess(stereotype.getObject())
                    .isGrantedToClient(userService.getUser(userService.getCurrentUser()));
        }

        @Override
        public String getMessageContentHTML() {
            return "Are you sure you want to delete '" + service.read(stereotype.getObject()).getName() + "'?";
        }

        @Override
        public String getOkButtonLabel() {
            return "Yes";
        }

        @Override
        public String getCancelButtonLabel() {
            return "No";
        }

        @Override
        public void onClick() {
            service.archive(stereotype.getObject());
        }
    });

    wrap.add(new RefreshingView<String>("groups") {

        @Override
        protected Iterator<IModel<String>> getItemModels() {
            List<String> all = new ArrayList<String>();
            if (stereotype.getObject() != null) {
                StereotypeUIMetaData meta = service.readUIMeta(stereotype.getObject());
                for (String g : meta.getEditGroups()) {
                    all.add("Group - " + g + " (edit)");
                }
                for (String g : meta.getEditUsers()) {
                    all.add("User  - " + g + " (edit)");
                }
                for (String g : meta.getViewGroups()) {
                    all.add("Group - " + g + " (view)");
                }
                for (String g : meta.getViewUsers()) {
                    all.add("User  - " + g + " (view)");
                }
            }
            if (all.isEmpty()) {
                all.add("Private (owner only)");
            }
            return WrapCollectionToModelCollection.get(all).iterator();
        }

        @Override
        protected void populateItem(final Item<String> item) {
            item.add(new Label("group", item.getModelObject()));
        }
    });
}

From source file:com.visural.wicket.component.fancybox.Fancybox.java

License:Apache License

/**
 * Create a fancy box link to an iframe URL.
 * @param id/*  ww  w.  ja va 2  s  .  c om*/
 * @param linkText
 * @param iframeURL
 */
public Fancybox(String id, final String iframeURL) {
    super(id);
    this.image = null;
    this.iframeURL = new AbstractReadOnlyModel() {

        @Override
        public Object getObject() {
            return iframeURL;
        }
    };
    this.container = null;
    initAll();
}

From source file:com.visural.wicket.component.viewmode.ViewOrEdit.java

License:Apache License

protected ViewOrEdit(final String id, final FormComponent component, IModel labelModel,
        final ComponentModelToLabel componentModelToLabel) {
    super(id);//w  w w  . ja va2s. com
    this.component = component;

    if (labelModel == null && componentModelToLabel != null) {
        labelModel = new AbstractReadOnlyModel() {

            private final ComponentModelToLabel converter = componentModelToLabel;

            @Override
            public Object getObject() {
                return converter.convertToLabel(component.getModelObject());
            }
        };
    }

    if (component == null || !component.getId().equals(COMP_ID)) {
        throw new IllegalArgumentException(
                "The component provided to LabelOnViewOnly(...) must have the id \"" + COMP_ID + "\"");
    }

    Fragment f = resolveComponentFragment(labelModel);
    if (f == null) {
        throw new UnsupportedOperationException(
                "No view mode fragment for component of type " + component.getClass().getName());
    }
    add(f);
}

From source file:com.visural.wicket.examples.BasePage.java

License:Apache License

public BasePage() {
    //        add(new StyleSheetReference("reset", BasePage.class, "reset-fonts-grids.css"));
    //        add(new StyleSheetReference("stylesheet", BasePage.class, "style.less"));
    add(new StyleSheetReference("stylesheet", BasePage.class, "style.css"));
    add(new Label("pageTitle", new PageTitleModel(false)));
    add(new Label("pageTitleHeader", new PageTitleModel(true)).setEscapeModelStrings(false));
    add(new BookmarkablePageLink("tabsLink", TabsExamplePage.class));
    add(new BookmarkablePageLink("dropdown", DropDownExamplePage.class));
    add(new BookmarkablePageLink("fancybox", FancyBoxExamplePage.class));
    add(new BookmarkablePageLink("inputHintLink", InputHintExamplePage.class));
    add(new BookmarkablePageLink("nicedit", RichTextEditorExamplePage.class));
    add(new BookmarkablePageLink("codebox", CodeboxExamplePage.class));
    add(new BookmarkablePageLink("submitters", SubmittersPage.class));
    add(new BookmarkablePageLink("confirmers", ConfirmersPage.class));
    add(new BookmarkablePageLink("vieworedit", ViewOrEditPage.class));
    add(new BookmarkablePageLink("dateInput", DateInputExamplePage.class));
    add(new BookmarkablePageLink("dialogBut", DialogExamplePage.class));
    add(new BookmarkablePageLink("tooltips", TipExamplePage.class));
    add(new BookmarkablePageLink("jsr303", Jsr303ExamplePage.class));
    add(new BookmarkablePageLink("lesscss", LessCSSExamplePage.class));

    add(new WebMarkupContainer("analytics").setVisible(IS_PROD_MODE));

    add(new Fancybox("viewSource",
            urlFor(ViewSourcePage.class, PageParamFactory.get(ViewSourcePage.PARAM_RESOURCE, getSourcePath()))
                    + "").setHeight(768).setWidth(1024));
    add(new Fancybox("viewMarkup",
            urlFor(ViewSourcePage.class, PageParamFactory.get(ViewSourcePage.PARAM_RESOURCE, getMarkupPath()))
                    + "").setHeight(768).setWidth(1024));

    add(new Label("title", new AbstractReadOnlyModel() {
        @Override/*  w  ww .j a va 2s  . com*/
        public Object getObject() {
            return getPageTitle();
        }
    }));
}

From source file:com.visural.wicket.model.DatePropertyColumn.java

License:Apache License

@Override
protected IModel createLabelModel(final IModel itemModel) {
    final IModel superModel = super.createLabelModel(itemModel);
    if (superModel != null && superModel.getObject() != null
            && Date.class.isAssignableFrom(superModel.getObject().getClass())) {
        return new AbstractReadOnlyModel() {
            public Object getObject() {
                return DateUtil.formatDate((Date) superModel.getObject(), dateFormat);
            }//from w w w .ja v a 2 s .co m
        };
    } else {
        return superModel;
    }
}

From source file:com.wiquery.plugin.antilia.grid.DefaultHeaderCell.java

License:Apache License

/**
 * @param id//  w  ww  .  jav a2  s  .  c  o m
 * @param model
 */
public DefaultHeaderCell(String id, int column, Table<E> table, IModel<String> titleModel,
        final IColumn<E> columnModel) {
    super(id, columnModel);
    this.table = table;
    this.column = column;
    setRenderBodyOnly(true);
    add(new HiddenField<Integer>("colWidth", new Model<Integer>() {

        private static final long serialVersionUID = 1L;

        @Override
        public Integer getObject() {
            return DefaultHeaderCell.this.getColumnModel().getWidth();
        }

        @Override
        public void setObject(Integer object) {
            if (object instanceof Integer) {
                DefaultHeaderCell.this.getColumnModel().setWidth(((Integer) object).intValue());
            }
        }

    }, Integer.class));

    DraggableTitle<E> draggableTarget = new DraggableTitle<E>("dragger", column) {

        private static final long serialVersionUID = 1L;

        @Override
        protected Table<E> getTable() {
            return DefaultHeaderCell.this.getTable();
        }
    };

    if (columnModel.isSortable()) {
        draggableTarget.add(new AjaxEventBehavior("ondblclick") {

            private static final long serialVersionUID = 1L;

            @Override
            protected void onEvent(AjaxRequestTarget target) {
                if (target != null) {
                    IColumn<E> columnModel = DefaultHeaderCell.this.getColumnModel();
                    if (!columnModel.isSortable()) {
                        return;
                    }
                    IPageableComponent<E> component = getTable();
                    IDataProvider<E> dataProvider = component.getDataProvider();
                    if (dataProvider instanceof ISortStateLocator) {
                        ISortStateLocator locator = (ISortStateLocator) dataProvider;
                        ISortState sortState = locator.getSortState();
                        if (sortState != null) {
                            int sortOrder = sortState.getPropertySortOrder(columnModel.getSortProperty());
                            if (sortOrder == ISortState.DESCENDING)
                                sortState.setPropertySortOrder(columnModel.getSortProperty(),
                                        ISortState.ASCENDING);
                            else if (sortOrder == ISortState.ASCENDING)
                                sortState.setPropertySortOrder(columnModel.getSortProperty(),
                                        ISortState.DESCENDING);
                            else
                                sortState.setPropertySortOrder(columnModel.getSortProperty(),
                                        ISortState.ASCENDING);
                        }
                        component.reset();
                    }
                    target.addComponent((Component) component);
                }
            }
        });
    }

    draggableTarget.setOutputMarkupId(true);

    add(draggableTarget);

    Label title = new Label("title", titleModel);
    title.add(new AttributeModifier("class", new AbstractReadOnlyModel<String>() {
        private static final long serialVersionUID = 1L;

        @Override
        public String getObject() {
            IColumn<E> columnModel = DefaultHeaderCell.this.getColumnModel();
            if (!columnModel.isSortable()) {
                return "headerTitle";
            }
            IPageableComponent<E> component = getTable();

            IDataProvider<E> dataProvider = component.getDataProvider();
            if (dataProvider instanceof ISortStateLocator) {
                ISortStateLocator locator = (ISortStateLocator) dataProvider;
                ISortState sortState = locator.getSortState();
                if (sortState != null) {
                    int sortOrder = sortState.getPropertySortOrder(columnModel.getSortProperty());
                    if (sortOrder == ISortState.DESCENDING)
                        return "headerTitleDesc";
                    else if (sortOrder == ISortState.ASCENDING)
                        return "headerTitleAsc";
                }
            }
            return "headerTitle";
        }
    }));
    draggableTarget.add(title);

    WebMarkupContainer dragTd = new WebMarkupContainer("dragTd");
    dragTd.add(new AttributeModifier("id", new AbstractReadOnlyModel<String>() {
        private static final long serialVersionUID = 1L;

        @Override
        public String getObject() {
            if (!DefaultHeaderCell.this.getTable().isColumnsResizable())
                return DefaultHeaderCell.this.getTable().getMarkupId() + "_cND_"
                        + DefaultHeaderCell.this.getColumn();
            if (columnModel.isResizable())
                return DefaultHeaderCell.this.getTable().getMarkupId() + "_c_"
                        + DefaultHeaderCell.this.getColumn();
            // this naming does the trick of making the column non re-sizable
            return DefaultHeaderCell.this.getTable().getMarkupId() + "_cND_"
                    + DefaultHeaderCell.this.getColumn();
        }
    }));
    dragTd.add(new AttributeModifier("class", new AbstractReadOnlyModel<String>() {

        private static final long serialVersionUID = 1L;

        @Override
        public String getObject() {
            if (!DefaultHeaderCell.this.getTable().isColumnsResizable())
                return "noResCol";
            if (columnModel.isResizable())
                return "resCol";
            return "noResCol";
        }
    }));

    add(dragTd);

    WebMarkupContainer sortInfo = new WebMarkupContainer("sortInfo");
    sortInfo.add(new AttributeModifier("class", new AbstractReadOnlyModel<String>() {
        private static final long serialVersionUID = 1L;

        @Override
        public String getObject() {
            IColumn<E> columnModel = DefaultHeaderCell.this.getColumnModel();
            if (!columnModel.isSortable()) {
                return "";
            }
            IPageableComponent<E> component = getTable();

            IDataProvider<E> dataProvider = component.getDataProvider();
            if (dataProvider instanceof ISortStateLocator) {
                ISortStateLocator locator = (ISortStateLocator) dataProvider;
                ISortState sortState = locator.getSortState();
                if (sortState != null) {
                    int sortOrder = sortState.getPropertySortOrder(columnModel.getSortProperty());
                    if (sortOrder == ISortState.DESCENDING)
                        return "ui-icon ui-icon-triangle-1-s";
                    else if (sortOrder == ISortState.ASCENDING)
                        return "ui-icon ui-icon-triangle-1-n";
                }
            }
            return "";
        }
    }));
    draggableTarget.add(sortInfo);

}