1 /**********************************************************************
2 * Copyright (c) 2005, 2013 IBM Corporation, Ericsson
3 * All rights reserved. This program and the accompanying materials
4 * are made available under the terms of the Eclipse Public License v1.0
5 * which accompanies this distribution, and is available at
6 * http://www.eclipse.org/legal/epl-v10.html
9 * IBM - Initial API and implementation
10 * Bernd Hufmann - Updated for TMF
11 **********************************************************************/
13 package org
.eclipse
.linuxtools
.tmf
.ui
.views
.uml2sd
.dialogs
;
15 import java
.text
.MessageFormat
;
17 import org
.eclipse
.jface
.dialogs
.Dialog
;
18 import org
.eclipse
.linuxtools
.tmf
.ui
.views
.uml2sd
.handlers
.provider
.ISDAdvancedPagingProvider
;
19 import org
.eclipse
.linuxtools
.tmf
.ui
.views
.uml2sd
.util
.SDMessages
;
20 import org
.eclipse
.swt
.SWT
;
21 import org
.eclipse
.swt
.layout
.FillLayout
;
22 import org
.eclipse
.swt
.layout
.GridData
;
23 import org
.eclipse
.swt
.widgets
.Composite
;
24 import org
.eclipse
.swt
.widgets
.Control
;
25 import org
.eclipse
.swt
.widgets
.Group
;
26 import org
.eclipse
.swt
.widgets
.Label
;
27 import org
.eclipse
.swt
.widgets
.Text
;
28 import org
.eclipse
.ui
.IViewPart
;
31 * Class implementation of the pages dialog.<br>
33 * It is associated to an SDView and to a ISDAdvancedPagingProvider.<br>
38 public class PagesDialog
extends Dialog
{
40 // ------------------------------------------------------------------------
42 // ------------------------------------------------------------------------
45 * viewer and provided are kept here as attributes
47 protected ISDAdvancedPagingProvider fProvider
= null;
50 protected TextArea fCurrentPage
;
53 protected Label fTotalPageComment
;
55 // ------------------------------------------------------------------------
57 // ------------------------------------------------------------------------
60 * Standard constructor
62 * @param view The sequence diagram view reference
63 * @param provider The paging provider reference
65 public PagesDialog(IViewPart view
, ISDAdvancedPagingProvider provider
) {
66 super(view
.getSite().getShell());
68 setShellStyle(SWT
.DIALOG_TRIM
| SWT
.APPLICATION_MODAL
);
71 // ------------------------------------------------------------------------
73 // ------------------------------------------------------------------------
77 * @see org.eclipse.jface.dialogs.Dialog#createDialogArea(org.eclipse.swt.widgets.Composite)
80 public Control
createDialogArea(Composite parent
) {
82 Group ret
= new Group(parent
, SWT
.NONE
);
83 GridData data
= new GridData();
84 data
.grabExcessHorizontalSpace
= true;
85 data
.horizontalAlignment
= GridData
.FILL
;
86 ret
.setLayoutData(data
);
87 ret
.setText(SDMessages
._67
);
89 FillLayout fillLayout
= new FillLayout(SWT
.VERTICAL
);
90 ret
.setLayout(fillLayout
);
92 Label label
= new Label(ret
, SWT
.NONE
);
93 label
.setText(SDMessages
._75
);
95 fCurrentPage
= new TextArea(ret
);
96 fCurrentPage
.setBounds(1, fProvider
.pagesCount());
97 fCurrentPage
.setValue(fProvider
.currentPage() + 1);
99 fTotalPageComment
= new Label(ret
, SWT
.NONE
);
100 fTotalPageComment
.setAlignment(SWT
.RIGHT
);
104 getShell().setText(SDMessages
._68
);
110 * @see org.eclipse.jface.dialogs.Dialog#okPressed()
113 public void okPressed() {
114 int currentPageValue
= fCurrentPage
.getValue() - 1;
116 fProvider
.pageNumberChanged(currentPageValue
);
120 * Updates the comments texts.
122 protected void updateComments() {
123 int pages
= Math
.max(0, fProvider
.pagesCount());
124 StringBuffer totalPageCommentText
= new StringBuffer();
125 totalPageCommentText
.append(SDMessages
._70
);
126 totalPageCommentText
.append(pages
);
127 totalPageCommentText
.append(" "); //$NON-NLS-1$
129 totalPageCommentText
.append(SDMessages
._71
);
130 } else if (pages
== 1) {
131 totalPageCommentText
.append(SDMessages
._72
);
133 totalPageCommentText
.append(SDMessages
._73
);
135 fTotalPageComment
.setText(totalPageCommentText
.toString());
139 // ------------------------------------------------------------------------
141 // ------------------------------------------------------------------------
143 * This is a Text Control that accepts only digits and ensures that bounds are respected
145 protected static class TextArea
{
149 protected Text fText
;
151 * The minimum page value
155 * The maximum page value
162 * @param parent The paren composite
164 public TextArea(Composite parent
) {
165 fText
= new Text(parent
, SWT
.SINGLE
| SWT
.BORDER
| SWT
.RIGHT
);
166 fText
.setTextLimit(10);
170 * Sets the page value.
172 * @param page The page value
174 public void setValue(int page
) {
175 int value
= Math
.max(fMin
, Math
.min(fMax
, page
));
176 fText
.setText(Integer
.toString(value
));
180 * Returns the page value.
182 * @return the page value
184 public int getValue() {
187 res
= Integer
.parseInt(fText
.getText());
188 } catch (Exception e
) {
192 return Math
.max(fMin
, Math
.min(fMax
, res
));
196 * Sets the minimum and maximum page values.
198 * @param min A minimum page value
199 * @param max A maximum page value
201 public void setBounds(int min
, int max
) {
202 fMin
= Math
.max(0, min
);
203 fMax
= Math
.max(fMin
, max
);
204 Integer tab
[] = new Integer
[2];
205 tab
[0] = Integer
.valueOf(fMin
);
206 tab
[1] = Integer
.valueOf(fMax
);
207 fText
.setToolTipText(MessageFormat
.format(SDMessages
._69
, (Object
[]) tab
));