X-Git-Url: http://git.argeo.org/?a=blobdiff_plain;f=cms%2Forg.argeo.slc.client.ui.dist%2Fsrc%2Forg%2Fargeo%2Fslc%2Fclient%2Fui%2Fdist%2Fcommands%2FDisplayRepoInformation.java;fp=cms%2Forg.argeo.slc.client.ui.dist%2Fsrc%2Forg%2Fargeo%2Fslc%2Fclient%2Fui%2Fdist%2Fcommands%2FDisplayRepoInformation.java;h=38e43671b469f01cca68e1a5e6d5da7fc22adfe3;hb=ecc22e604e47533c79de9cecdcdeacbc752cbff1;hp=0000000000000000000000000000000000000000;hpb=e07ded4632e53f8b8869763bc1f1f4091361e76e;p=gpl%2Fargeo-slc.git diff --git a/cms/org.argeo.slc.client.ui.dist/src/org/argeo/slc/client/ui/dist/commands/DisplayRepoInformation.java b/cms/org.argeo.slc.client.ui.dist/src/org/argeo/slc/client/ui/dist/commands/DisplayRepoInformation.java new file mode 100644 index 000000000..38e43671b --- /dev/null +++ b/cms/org.argeo.slc.client.ui.dist/src/org/argeo/slc/client/ui/dist/commands/DisplayRepoInformation.java @@ -0,0 +1,145 @@ +package org.argeo.slc.client.ui.dist.commands; + +import javax.jcr.Repository; +import javax.jcr.Session; + +import org.argeo.jcr.JcrUtils; +import org.argeo.slc.client.ui.dist.DistPlugin; +import org.argeo.slc.client.ui.dist.model.RepoElem; +import org.argeo.slc.repo.RepoService; +import org.eclipse.core.commands.AbstractHandler; +import org.eclipse.core.commands.ExecutionEvent; +import org.eclipse.core.commands.ExecutionException; +import org.eclipse.jface.dialogs.Dialog; +import org.eclipse.jface.dialogs.IDialogConstants; +import org.eclipse.jface.resource.ImageDescriptor; +import org.eclipse.jface.viewers.IStructuredSelection; +import org.eclipse.swt.SWT; +import org.eclipse.swt.graphics.Point; +import org.eclipse.swt.layout.GridData; +import org.eclipse.swt.layout.GridLayout; +import org.eclipse.swt.widgets.Button; +import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Control; +import org.eclipse.swt.widgets.Label; +import org.eclipse.swt.widgets.Shell; +import org.eclipse.swt.widgets.Text; +import org.eclipse.ui.handlers.HandlerUtil; + +/** + * Open a dialog that displays various information on the current repository. + */ +public class DisplayRepoInformation extends AbstractHandler { + public final static String ID = DistPlugin.PLUGIN_ID + ".displayRepoInformation"; + public final static String DEFAULT_LABEL = "Information"; + public final static ImageDescriptor DEFAULT_ICON = DistPlugin + .getImageDescriptor("icons/help.gif"); + + /* DEPENDENCY INJECTION */ + private RepoService repoService; + private Repository nodeRepository; + + public Object execute(ExecutionEvent event) throws ExecutionException { + IStructuredSelection iss = (IStructuredSelection) HandlerUtil + .getActiveSite(event).getSelectionProvider().getSelection(); + if (iss.getFirstElement() instanceof RepoElem) { + RepoElem re = (RepoElem) iss.getFirstElement(); + + Session defaultSession = null; + try { + defaultSession = repoService.getRemoteSession(re.getRepoNodePath(), + re.getUri(), null); + + InformationDialog inputDialog = new InformationDialog( + HandlerUtil.getActiveSite(event).getShell()); + inputDialog.create(); + // TODO add more information. + inputDialog.loginTxt.setText(defaultSession.getUserID()); + inputDialog.nameTxt.setText(re.getLabel()); + inputDialog.uriTxt.setText(re.getUri()); + inputDialog.readOnlyBtn.setSelection(re.isReadOnly()); + + inputDialog.open(); + // } catch (RepositoryException e) { + // throw new SlcException("Unexpected error while " + // + "getting repository information.", e); + } finally { + JcrUtils.logoutQuietly(defaultSession); + } + } + return null; + } + + private class InformationDialog extends Dialog { + Text nameTxt; + Text uriTxt; + Text loginTxt; + Button readOnlyBtn; + + @Override + protected void createButtonsForButtonBar(Composite parent) { + // No Cancel button + createButton(parent, IDialogConstants.OK_ID, "OK", true); + } + + public InformationDialog(Shell parentShell) { + super(parentShell); + } + + protected Point getInitialSize() { + return new Point(500, 250); + } + + protected Control createDialogArea(Composite parent) { + Composite dialogarea = (Composite) super.createDialogArea(parent); + dialogarea.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, + true)); + Composite composite = new Composite(dialogarea, SWT.NONE); + GridLayout layout = new GridLayout(2, false); + layout.horizontalSpacing = 15; + composite.setLayout(layout); + GridData gd = new GridData(SWT.FILL, SWT.FILL, true, false); + composite.setLayoutData(gd); + + nameTxt = createLT(composite, "Name"); + uriTxt = createLT(composite, "URI"); + loginTxt = createLT(composite, "Logged as"); + readOnlyBtn = createLC(composite, "Read only"); + parent.pack(); + return composite; + } + + /** Creates label and text. */ + protected Text createLT(Composite parent, String label) { + new Label(parent, SWT.RIGHT).setText(label); + Text text = new Text(parent, SWT.SINGLE | SWT.LEAD | SWT.NONE); + text.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true)); + text.setEditable(false); + return text; + } + + /** Creates label and check. */ + protected Button createLC(Composite parent, String label) { + new Label(parent, SWT.RIGHT).setText(label); + Button check = new Button(parent, SWT.CHECK); + check.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true)); + check.setEnabled(false); + return check; + } + + protected void configureShell(Shell shell) { + super.configureShell(shell); + shell.setText("Repository information"); + } + } + + /* DEPENDENCY INJECTION */ + public void setRepoService(RepoService repoService) { + this.repoService = repoService; + } + + public void setNodeRepository(Repository nodeRepository) { + this.nodeRepository = nodeRepository; + } + +} \ No newline at end of file