/******************************************************************************* * Copyright (c) 2014, 2016 Red Hat Inc. 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: * Red Hat - Initial Contribution *******************************************************************************/ package org.eclipse.linuxtools.internal.docker.ui.wizards; import org.eclipse.jface.wizard.WizardPage; import org.eclipse.linuxtools.internal.docker.ui.SWTImagesFactory; import org.eclipse.swt.SWT; import org.eclipse.swt.events.ModifyListener; import org.eclipse.swt.graphics.Point; import org.eclipse.swt.layout.FormAttachment; import org.eclipse.swt.layout.FormData; import org.eclipse.swt.layout.FormLayout; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Control; import org.eclipse.swt.widgets.Label; import org.eclipse.swt.widgets.Text; public class ContainerCommitPage extends WizardPage { private final static String NAME = "ContainerCommit.name"; //$NON-NLS-1$ private final static String TITLE = "ContainerCommit.title"; //$NON-NLS-1$ private final static String DESC = "ContainerCommit.desc"; //$NON-NLS-1$ private final static String COMMIT_LABEL = "ContainerCommit.label"; //$NON-NLS-1$ private final static String NAME_LABEL = "Name.label"; //$NON-NLS-1$ private final static String NAME_TOOLTIP = "ImageName.toolTip"; //$NON-NLS-1$ private final static String AUTHOR_LABEL = "Author.label"; //$NON-NLS-1$ private final static String COMMENT_LABEL = "Comment.label"; //$NON-NLS-1$ private final static String INVALID_REPO_ID = "ErrorInvalidRepo.msg"; //$NON-NLS-1$ private String repo; private String tag; private Text nameText; private Text authorText; private Text commentText; public ContainerCommitPage(String container) { super(WizardMessages.getString(NAME)); setDescription(WizardMessages.getFormattedString(DESC, container.substring(0, 8))); setTitle(WizardMessages.getString(TITLE)); setImageDescriptor(SWTImagesFactory.DESC_WIZARD); } public String getRepo() { return repo; } public String getTag() { return tag; } public String getAuthor() { return authorText.getText(); } public String getComment() { return commentText.getText(); } private ModifyListener Listener = e -> validate(); private void validate() { boolean complete = true; boolean error = false; if (nameText.getText().length() == 0) complete = false; if (!error) { String[] tokens = nameText.getText().split(":"); //$NON-NLS-1$ if (tokens.length == 2) { repo = tokens[0]; tag = tokens[1]; setErrorMessage(null); } else if (tokens.length == 1) { repo = tokens[0]; tag = ""; //$NON-NLS-1$ setErrorMessage(null); } else { setErrorMessage(WizardMessages.getString(INVALID_REPO_ID)); } } setPageComplete(complete && !error); } @Override public void createControl(Composite parent) { final Composite composite = new Composite(parent, SWT.NULL); FormLayout layout = new FormLayout(); layout.marginHeight = 5; layout.marginWidth = 5; composite.setLayout(layout); Label label = new Label(composite, SWT.NULL); label.setText(WizardMessages.getString(COMMIT_LABEL)); Label nameLabel = new Label(composite, SWT.NULL); nameLabel.setText(WizardMessages.getString(NAME_LABEL)); nameText = new Text(composite, SWT.BORDER | SWT.SINGLE); nameText.addModifyListener(Listener); nameText.setToolTipText(WizardMessages.getString(NAME_TOOLTIP)); Label authorLabel = new Label(composite, SWT.NULL); authorLabel.setText(WizardMessages.getString(AUTHOR_LABEL)); authorText = new Text(composite, SWT.BORDER | SWT.SINGLE); authorText.addModifyListener(Listener); Label commentLabel = new Label(composite, SWT.NULL); commentLabel.setText(WizardMessages.getString(COMMENT_LABEL)); commentText = new Text(composite, SWT.BORDER | SWT.SINGLE); commentText.addModifyListener(Listener); Point p1 = label.computeSize(SWT.DEFAULT, SWT.DEFAULT); Point p2 = nameText.computeSize(SWT.DEFAULT, SWT.DEFAULT); int centering = (p2.y - p1.y + 1) / 2; FormData f = new FormData(); f.top = new FormAttachment(0); label.setLayoutData(f); Control prevControl = label; Control longestLabel = commentLabel; f = new FormData(); f.top = new FormAttachment(prevControl, 11 + centering); f.left = new FormAttachment(0, 0); nameLabel.setLayoutData(f); f = new FormData(); f.top = new FormAttachment(prevControl, 11); f.left = new FormAttachment(longestLabel, 5); f.right = new FormAttachment(100); nameText.setLayoutData(f); prevControl = nameLabel; f = new FormData(); f.top = new FormAttachment(prevControl, 11 + centering); f.left = new FormAttachment(0, 0); authorLabel.setLayoutData(f); f = new FormData(); f.top = new FormAttachment(prevControl, 11); f.left = new FormAttachment(longestLabel, 5); f.right = new FormAttachment(100); authorText.setLayoutData(f); prevControl = authorLabel; f = new FormData(); f.top = new FormAttachment(prevControl, 11 + centering); f.left = new FormAttachment(0, 0); commentLabel.setLayoutData(f); f = new FormData(); f.top = new FormAttachment(prevControl, 11); f.left = new FormAttachment(longestLabel, 5); f.right = new FormAttachment(100); commentText.setLayoutData(f); prevControl = commentLabel; setControl(composite); setPageComplete(false); } }