public AbstractBrowserDialog(IPluginContext context, IPluginConfig config, IModel<T> model) { super(model); this.context = context; this.config = config; controller = new NodePickerController(context, NodePickerControllerSettings.fromPluginConfig(config)) { @Override protected IModel<Node> getInitialModel() { return (IModel<Node>) getModelObject().getLinkTarget(); } @Override protected void onSelect(boolean isValid) { IModel<Node> selectedModel = getSelectedModel(); if(isValid && selectedModel != null) { getModelObject().setLinkTarget(selectedModel); onModelSelected(selectedModel); checkState(); } else { setOkEnabled(false); } } }; add(controller.create("content")); }
public static NodePickerControllerSettings fromPluginConfig(final IPluginConfig config) { final JavaPluginConfig clusterOptions = new JavaPluginConfig(config.getPluginConfig(CLUSTER_OPTIONS)); clusterOptions.remove(AbstractRenderService.WICKET_ID); // enforce a unique ID for this node picker final NodePickerControllerSettings settings = new NodePickerControllerSettings(); settings.setClusterName(config.getString(CLUSTER_NAME, DEFAULT_CLUSTER)); settings.setClusterOptions(clusterOptions); settings.setSelectionServiceKey(config.getString(SELECTION_SERVICE_KEY, DEFAULT_SELECTION_SERVICE_KEY)); settings.setFolderServiceKey(config.getString(FOLDER_SERVICE_KEY, DEFAULT_FOLDER_SERVICE_KEY)); settings.setSelectableNodeTypes(config.getStringArray(SELECTABLE_NODETYPES)); settings.setLastVisitedNodeTypes(config.getStringArray(LAST_VISITED_NODETYPES)); settings.setLastVisitedKey(config.getString(LAST_VISITED_KEY, DEFAULT_LAST_VISITED_KEY)); settings.setLastVisitedEnabled(config.getAsBoolean(LAST_VISITED_ENABLED, DEFAULT_LAST_VISITED_ENABLED)); settings.setDefaultModelUUID(config.getString(BASE_UUID, null)); return settings; }
public NodePickerController(final IPluginContext context, final NodePickerControllerSettings settings) { this.context = context; this.settings = settings; if (settings.isLastVisitedEnabled()) { lastModelVisited = getLastVisitedFromPreferences(); } if (settings.hasBaseUUID()) { final String baseUUID = settings.getBaseUUID(); try { final Node baseNode = UserSession.get().getJcrSession().getNodeByIdentifier(baseUUID); baseModel = new JcrNodeModel(baseNode); } catch (final RepositoryException e) { log.error("Could not create base model from UUID[" + baseUUID + "]", e); } } }
if (settings.hasSelectableNodeTypes()) { for (final String allowedNodeType : settings.getSelectableNodeTypes()) { if (node.isNodeType(allowedNodeType)) { return true;
IPluginConfigService.class); final IClusterConfig template = pluginConfigService.getCluster(settings.getClusterName()); final IPluginConfig parameters = settings.getClusterOptions(); final String selectionModelServiceId = clusterConfig.getString(settings.getSelectionServiceKey()); selectionModelReference = context.getService(selectionModelServiceId, IModelReference.class); context.registerService(selectionModelObserver = new IObserver() { final String folderModelServiceId = clusterConfig.getString(settings.getFolderServiceKey()); if (folderModelServiceId != null) { folderModelReference = context.getService(folderModelServiceId, IModelReference.class);
Node node = lastModelVisited.getObject(); final Node parent = node.getParent(); if (settings.hasLastVisitedNodeTypes()) { final Node root = UserSession.get().getJcrSession().getRootNode(); while (!node.isSame(root)) { for (final String nodeType : settings.getLastVisitedNodeTypes()) { if (node.isNodeType(nodeType)) { storeLastVisited(node.getPath());
private void storeLastVisited(final String path) { final IPreferencesStore store = context.getService(IPreferencesStore.SERVICE_ID, IPreferencesStore.class); store.set(settings.getLastVisitedKey(), LAST_VISITED, path); }
/** * Check the IPreferencesStore for a last visited location (a node path) and if found, return it in a new * JcrNodeModel, otherwise return null. * * @return A new JcrNodeModel pointing to the last visited location (a node path) or null */ protected IModel<Node> getLastVisitedFromPreferences() { final IPreferencesStore store = context.getService(IPreferencesStore.SERVICE_ID, IPreferencesStore.class); final String lastVisited = store.getString(settings.getLastVisitedKey(), LAST_VISITED); if (lastVisited != null) { return new JcrNodeModel(lastVisited); } return null; }
this.config = config; controller = new NodePickerController(context, NodePickerControllerSettings.fromPluginConfig(config)) {
final NodePickerControllerSettings settings = NodePickerControllerSettings.fromPluginConfig(config); controller = new NodePickerController(context, settings) {