Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/CommentTemplatesPreferencePage.java')
-rw-r--r--bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/CommentTemplatesPreferencePage.java245
1 files changed, 245 insertions, 0 deletions
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/CommentTemplatesPreferencePage.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/CommentTemplatesPreferencePage.java
new file mode 100644
index 000000000..f489cc651
--- /dev/null
+++ b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/CommentTemplatesPreferencePage.java
@@ -0,0 +1,245 @@
+/*******************************************************************************
+ * Copyright (c) 2005, 2010 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Maik Schreiber - initial API and implementation
+ * IBM - ongoing development
+ *******************************************************************************/
+
+package org.eclipse.team.internal.ccvs.ui;
+
+import org.eclipse.jface.dialogs.Dialog;
+import org.eclipse.jface.dialogs.IDialogConstants;
+import org.eclipse.jface.preference.PreferencePage;
+import org.eclipse.jface.viewers.*;
+import org.eclipse.jface.window.Window;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.*;
+import org.eclipse.team.core.TeamException;
+import org.eclipse.team.internal.ccvs.core.util.Util;
+import org.eclipse.ui.*;
+
+public class CommentTemplatesPreferencePage extends PreferencePage implements
+ IWorkbenchPreferencePage, ISelectionChangedListener {
+
+ private ListViewer viewer;
+ private Button editButton;
+ private Button removeButton;
+ private Text preview;
+
+ protected Control createContents(Composite ancestor) {
+ Composite parent = new Composite(ancestor, SWT.NONE);
+ GridLayout layout = new GridLayout();
+ layout.marginWidth = 0;
+ layout.marginHeight = 0;
+ layout.numColumns = 1;
+ parent.setLayout(layout);
+ parent.setLayoutData(new GridData(GridData.FILL_BOTH));
+
+ createListAndButtons(parent);
+
+ Label previewLabel = new Label(parent, SWT.NONE);
+ previewLabel.setText(CVSUIMessages.CommentTemplatesPreferencePage_Preview);
+
+ preview = new Text(parent, SWT.MULTI | SWT.READ_ONLY | SWT.BORDER);
+ GridData gd = new GridData(GridData.FILL_HORIZONTAL);
+ gd.heightHint = convertHeightInCharsToPixels(5);
+ preview.setLayoutData(gd);
+
+ PlatformUI.getWorkbench().getHelpSystem().setHelp(getControl(), IHelpContextIds.COMMENT_TEMPLATE_PREFERENCE_PAGE);
+ Dialog.applyDialogFont(ancestor);
+
+ return parent;
+ }
+
+ private Composite createListAndButtons(Composite parent) {
+ Composite listAndButtons = new Composite(parent, SWT.NONE);
+ GridLayout layout = new GridLayout();
+ layout.marginWidth = 0;
+ layout.marginHeight = 0;
+ layout.numColumns = 2;
+ listAndButtons.setLayout(layout);
+ listAndButtons.setLayoutData(new GridData(GridData.FILL_BOTH));
+
+ Label viewerLabel = new Label(listAndButtons, SWT.NONE);
+ viewerLabel.setText(CVSUIMessages.CommentTemplatesPreferencePage_Description);
+ GridData data = new GridData(GridData.FILL_HORIZONTAL);
+ data.horizontalSpan = 2;
+ viewerLabel.setLayoutData(data);
+
+ viewer = new ListViewer(listAndButtons);
+ viewer.setLabelProvider(new LabelProvider() {
+ public String getText(Object element) {
+ String template = (String) element;
+ return Util.flattenText(template);
+ }
+ });
+ viewer.addSelectionChangedListener(this);
+ viewer.setComparator(new ViewerComparator() {
+ public int compare(Viewer viewer, Object e1, Object e2) {
+ String template1 = Util.flattenText((String) e1);
+ String template2 = Util.flattenText((String) e2);
+ return template1.compareToIgnoreCase(template2);
+ }
+ });
+ viewer.addDoubleClickListener(new IDoubleClickListener() {
+ public void doubleClick(DoubleClickEvent event) {
+ editTemplate();
+ }
+ });
+ List list = viewer.getList();
+ list.setLayoutData(new GridData(GridData.FILL_BOTH));
+
+ // populate list
+ String[] templates =
+ CVSUIPlugin.getPlugin().getRepositoryManager().getCommentTemplates();
+ for (int i = 0; i < templates.length; i++) {
+ viewer.add(templates[i]);
+ }
+
+ createButtons(listAndButtons);
+ return listAndButtons;
+ }
+
+ private void createButtons(Composite parent) {
+ Composite buttons = new Composite(parent, SWT.NONE);
+ buttons.setLayoutData(new GridData(GridData.VERTICAL_ALIGN_BEGINNING));
+ GridLayout layout = new GridLayout();
+ layout.marginHeight = 0;
+ layout.marginWidth = 0;
+ buttons.setLayout(layout);
+
+ Button newButton = new Button(buttons, SWT.PUSH);
+ newButton.setText(CVSUIMessages.CommentTemplatesPreferencePage_New);
+ GridData data = new GridData();
+ data.horizontalAlignment = GridData.FILL;
+ int widthHint = convertHorizontalDLUsToPixels(IDialogConstants.BUTTON_WIDTH);
+ data.widthHint = Math.max(widthHint,
+ newButton.computeSize(SWT.DEFAULT, SWT.DEFAULT, true).x);
+ newButton.setLayoutData(data);
+ newButton.setEnabled(true);
+ newButton.addListener(SWT.Selection, new Listener() {
+ public void handleEvent(Event event) {
+ newTemplate();
+ }
+ });
+
+ editButton = new Button(buttons, SWT.PUSH);
+ editButton.setText(CVSUIMessages.CommentTemplatesPreferencePage_Edit);
+ data = new GridData();
+ data.horizontalAlignment = GridData.FILL;
+ widthHint = convertHorizontalDLUsToPixels(IDialogConstants.BUTTON_WIDTH);
+ data.widthHint = Math.max(widthHint,
+ editButton.computeSize(SWT.DEFAULT, SWT.DEFAULT, true).x);
+ editButton.setLayoutData(data);
+ editButton.setEnabled(false);
+ editButton.addListener(SWT.Selection, new Listener() {
+ public void handleEvent(Event e) {
+ editTemplate();
+ }
+ });
+
+ removeButton = new Button(buttons, SWT.PUSH);
+ removeButton.setText(CVSUIMessages.CommentTemplatesPreferencePage_Remove);
+ data = new GridData();
+ data.horizontalAlignment = GridData.FILL;
+ widthHint = convertHorizontalDLUsToPixels(IDialogConstants.BUTTON_WIDTH);
+ data.widthHint = Math.max(widthHint,
+ removeButton.computeSize(SWT.DEFAULT, SWT.DEFAULT, true).x);
+ removeButton.setLayoutData(data);
+ removeButton.setEnabled(false);
+ removeButton.addListener(SWT.Selection, new Listener() {
+ public void handleEvent(Event e) {
+ remove();
+ }
+ });
+ }
+
+ public void selectionChanged(SelectionChangedEvent event) {
+ IStructuredSelection selection = (IStructuredSelection) event.getSelection();
+ switch (selection.size()) {
+ case 0:
+ editButton.setEnabled(false);
+ removeButton.setEnabled(false);
+ preview.setText(""); //$NON-NLS-1$
+ break;
+
+ case 1:
+ editButton.setEnabled(true);
+ removeButton.setEnabled(true);
+ preview.setText((String) selection.getFirstElement());
+ break;
+
+ default:
+ editButton.setEnabled(false);
+ removeButton.setEnabled(true);
+ preview.setText(""); //$NON-NLS-1$
+ break;
+ }
+ }
+
+ void newTemplate() {
+ CommentTemplateEditDialog dialog = new CommentTemplateEditDialog(
+ getShell(),
+ CVSUIMessages.CommentTemplatesPreferencePage_EditCommentTemplateTitle,
+ CVSUIMessages.CommentTemplatesPreferencePage_EditCommentTemplateMessage,
+ "", null); //$NON-NLS-1$
+ if (dialog.open() == Window.OK) {
+ viewer.add(dialog.getValue());
+ }
+ }
+
+ void editTemplate() {
+ IStructuredSelection selection = (IStructuredSelection) viewer.getSelection();
+ if (selection.size() == 1) {
+ String oldTemplate = (String) selection.getFirstElement();
+ CommentTemplateEditDialog dialog = new CommentTemplateEditDialog(
+ getShell(),
+ CVSUIMessages.CommentTemplatesPreferencePage_EditCommentTemplateTitle,
+ CVSUIMessages.CommentTemplatesPreferencePage_EditCommentTemplateMessage,
+ oldTemplate, null);
+ if (dialog.open() == Window.OK) {
+ viewer.remove(oldTemplate);
+ viewer.add(dialog.getValue());
+ }
+ }
+ }
+
+ void remove() {
+ IStructuredSelection selection = (IStructuredSelection) viewer.getSelection();
+ viewer.remove(selection.toArray());
+ }
+
+ public boolean performOk() {
+ int numTemplates = viewer.getList().getItemCount();
+ String[] templates = new String[numTemplates];
+ for (int i = 0; i < numTemplates; i++) {
+ templates[i] = (String) viewer.getElementAt(i);
+ }
+ try {
+ CVSUIPlugin.getPlugin().getRepositoryManager()
+ .replaceAndSaveCommentTemplates(templates);
+ } catch (TeamException e) {
+ CVSUIPlugin.openError(getShell(), null, null, e, CVSUIPlugin.LOG_OTHER_EXCEPTIONS);
+ }
+
+ return super.performOk();
+ }
+
+ public void init(IWorkbench workbench) {
+ // Nothing to do
+ }
+
+ protected void performDefaults() {
+ // default: the list of comments is cleaned
+ viewer.getList().removeAll();
+ super.performDefaults();
+ }
+
+}

Back to the top