Commit | Line | Data |
---|---|---|
73005152 BH |
1 | /********************************************************************** |
2 | * Copyright (c) 2005, 2008, 2011 IBM Corporation and others. | |
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 | |
7 | * $Id: SDPrintDialogUI.java,v 1.3 2008/01/24 02:28:52 apnan Exp $ | |
8 | * | |
9 | * Contributors: | |
10 | * IBM - Initial API and implementation | |
11 | * Bernd Hufmann - Updated for TMF | |
12 | **********************************************************************/ | |
13 | package org.eclipse.linuxtools.tmf.ui.views.uml2sd.util; | |
14 | ||
15 | import java.text.MessageFormat; | |
16 | import java.util.Arrays; | |
17 | ||
18 | import org.eclipse.jface.dialogs.MessageDialog; | |
19 | import org.eclipse.jface.wizard.WizardPage; | |
20 | import org.eclipse.linuxtools.tmf.ui.viewers.timeAnalysis.GridUtil; | |
21 | import org.eclipse.linuxtools.tmf.ui.views.uml2sd.DiagramToolTip; | |
22 | import org.eclipse.linuxtools.tmf.ui.views.uml2sd.NGC; | |
23 | import org.eclipse.linuxtools.tmf.ui.views.uml2sd.SDWidget; | |
24 | import org.eclipse.swt.SWT; | |
25 | import org.eclipse.swt.events.FocusEvent; | |
26 | import org.eclipse.swt.events.FocusListener; | |
27 | import org.eclipse.swt.events.KeyEvent; | |
28 | import org.eclipse.swt.events.ModifyEvent; | |
29 | import org.eclipse.swt.events.ModifyListener; | |
30 | import org.eclipse.swt.events.MouseEvent; | |
31 | import org.eclipse.swt.events.MouseTrackListener; | |
32 | import org.eclipse.swt.events.SelectionEvent; | |
33 | import org.eclipse.swt.events.SelectionListener; | |
34 | import org.eclipse.swt.events.TraverseEvent; | |
35 | import org.eclipse.swt.events.TraverseListener; | |
36 | import org.eclipse.swt.graphics.GC; | |
37 | import org.eclipse.swt.graphics.Image; | |
38 | import org.eclipse.swt.graphics.ImageData; | |
39 | import org.eclipse.swt.graphics.RGB; | |
40 | import org.eclipse.swt.graphics.Rectangle; | |
41 | import org.eclipse.swt.layout.GridData; | |
42 | import org.eclipse.swt.layout.GridLayout; | |
43 | import org.eclipse.swt.printing.PrintDialog; | |
44 | import org.eclipse.swt.printing.Printer; | |
45 | import org.eclipse.swt.printing.PrinterData; | |
46 | import org.eclipse.swt.widgets.Button; | |
47 | import org.eclipse.swt.widgets.Composite; | |
48 | import org.eclipse.swt.widgets.Control; | |
49 | import org.eclipse.swt.widgets.Display; | |
50 | import org.eclipse.swt.widgets.Group; | |
51 | import org.eclipse.swt.widgets.Label; | |
52 | import org.eclipse.swt.widgets.Shell; | |
53 | import org.eclipse.swt.widgets.Text; | |
54 | ||
55 | /** | |
56 | * @author sveyrier | |
57 | */ | |
58 | public class SDPrintDialogUI { | |
59 | ||
60 | protected Button setHPagesNumber; | |
61 | ||
62 | protected Button setVPagesNumber; | |
63 | ||
64 | protected Button useCurrentZoom; | |
65 | ||
66 | protected Button allPages; | |
67 | ||
68 | protected Button currentPage; | |
69 | ||
70 | protected Button pageList; | |
71 | ||
72 | protected Button pageRange; | |
73 | ||
74 | protected Text fromPage; | |
75 | ||
76 | protected Text toPage; | |
77 | ||
78 | protected SDWidget view; | |
79 | ||
80 | protected Text hPagesNum; | |
81 | ||
82 | protected Text vPagesNum; | |
83 | ||
84 | protected Text totalPages; | |
85 | ||
86 | protected ModifyListener modifyListener; | |
87 | ||
88 | protected SelectionListener selectionListener; | |
89 | ||
90 | protected LocalSD overviewCanvas; | |
91 | ||
92 | protected int nbPages = 0; | |
93 | ||
94 | protected int pageNum = -1; | |
95 | ||
96 | protected int firstPage = -1; | |
97 | ||
98 | protected int pagesList[]; | |
99 | ||
100 | protected float stepX, stepY, sTX, sTY; | |
101 | ||
102 | protected int from, to; | |
103 | ||
104 | protected boolean multiSelection = false; | |
105 | ||
106 | protected boolean areaSelection = false; | |
107 | ||
108 | protected boolean printAll; | |
109 | protected boolean printCurrent; | |
110 | protected boolean printSelection; | |
111 | protected boolean printRange; | |
112 | ||
113 | protected int nbRows, nbLines; | |
114 | ||
115 | protected float zoomFactor; | |
116 | ||
117 | protected PrinterData printerData; | |
118 | ||
119 | protected DiagramToolTip toolTip = null; | |
120 | ||
121 | protected Label currentSelection; | |
122 | ||
123 | protected Shell shell; | |
124 | ||
125 | protected Button printerDialog; | |
126 | ||
127 | protected boolean showPrintButton; | |
128 | ||
129 | int test = 3; | |
130 | ||
73005152 BH |
131 | // bug 195026 |
132 | protected WizardPage parentWizardPage = null; | |
133 | protected SDPrintDialog parentDialog = null; | |
134 | ||
135 | protected class LocalSD extends SDWidget { | |
136 | ||
137 | @Override | |
138 | public int getContentsHeight() { | |
139 | if (view.getContentsHeight() > view.getContentsHeight()) | |
140 | return (int) (view.getVisibleHeight() / (float) test / view.zoomValue); | |
141 | else | |
142 | return (int) (super.getContentsHeight()); | |
143 | } | |
144 | ||
145 | @Override | |
146 | public int getContentsWidth() { | |
147 | if (view.getVisibleWidth() > view.getContentsWidth()) | |
148 | return (int) (view.getVisibleWidth() / (float) test / view.zoomValue); | |
149 | else | |
150 | return (int) (super.getContentsWidth()); | |
151 | } | |
152 | ||
153 | public LocalSD(Composite c, int s) { | |
154 | super(c, s); | |
155 | } | |
156 | ||
157 | @Override | |
158 | protected void contentsMouseHover(MouseEvent event) { | |
159 | } | |
160 | ||
161 | protected Image createPagesSelectionImages(Image img, int width, float stepX, int height, float stepY) { | |
162 | ||
163 | Image over = new Image(super.getShell().getDisplay(), img.getImageData()); | |
164 | ||
165 | for (int pageIndex = 0; pageIndex < pagesList.length; pageIndex++) { | |
166 | /* | |
167 | * int line=pageNum/getPagesForSelection(); int row=pageNum%getPagesForSelection(); if (row!=0) line++; | |
168 | * else row=getPagesForSelection(); line--; row--; over=new | |
169 | * Image(super.getShell().getDisplay(),drawRegionSelected(img,new Rectangle(row*stepX, | |
170 | * line*stepY,stepX,stepY),new RGB(0,155,0))); | |
171 | */ | |
172 | ||
173 | int pageNum = pagesList[pageIndex]; | |
174 | if (getPagesForSelection() > 0 && pageNum > 0) { | |
175 | int line = pageNum / getNbRow(); | |
176 | int row = pageNum % getNbRow(); | |
177 | if (row != 0) | |
178 | line++; | |
179 | else | |
180 | row = getNbRow(); | |
181 | ||
182 | line--; | |
183 | row--; | |
184 | ||
185 | Image toDel = over; | |
186 | if (overviewCanvas.isFocusControl()) | |
187 | over = new Image(super.getShell().getDisplay(), drawRegionSelected(toDel, new Rectangle(contentsToViewX((int) (row * stepX * overviewCanvas.zoomValue)), contentsToViewY((int) (line * stepY * overviewCanvas.zoomValue)), | |
188 | ((int) (stepX * overviewCanvas.zoomValue)), ((int) (stepY * overviewCanvas.zoomValue))), new RGB(0, 0, 128))); | |
189 | else | |
190 | over = new Image(super.getShell().getDisplay(), drawRegionSelected(toDel, new Rectangle(contentsToViewX((int) (row * stepX * overviewCanvas.zoomValue)), contentsToViewY((int) (line * stepY * overviewCanvas.zoomValue)), | |
191 | ((int) (stepX * overviewCanvas.zoomValue)), ((int) (stepY * overviewCanvas.zoomValue))), new RGB(221, 208, 200))); | |
192 | toDel.dispose(); | |
193 | } | |
194 | } | |
195 | ||
196 | Arrays.sort(pagesList); | |
197 | int pos = Arrays.binarySearch(pagesList, pageNum); | |
198 | if (pos < 0) | |
199 | if (getPagesForSelection() > 0 && pageNum > 0) { | |
200 | int line = pageNum / getNbRow(); | |
201 | int row = pageNum % getNbRow(); | |
202 | if (row != 0) | |
203 | line++; | |
204 | else | |
205 | row = getNbRow(); | |
206 | ||
207 | line--; | |
208 | row--; | |
209 | ||
210 | Image toDel = over; | |
211 | over = new Image(super.getShell().getDisplay(), drawRegionSelected(toDel, new Rectangle(contentsToViewX((int) (row * stepX * overviewCanvas.zoomValue)), contentsToViewY((int) (line * stepY * overviewCanvas.zoomValue)), | |
212 | ((int) (stepX * overviewCanvas.zoomValue)), ((int) (stepY * overviewCanvas.zoomValue))), new RGB(221, 208, 200))); | |
213 | toDel.dispose(); | |
214 | } | |
215 | ||
216 | GC imGC2 = new GC(over); | |
217 | imGC2.setBackground(Display.getDefault().getSystemColor(SWT.COLOR_BLACK)); | |
218 | NGC imGC = new NGC(overviewCanvas, imGC2); | |
219 | for (int i = 0, x = 0; x <= width && stepX > 0; i++, x = (int) (i * stepX)) | |
220 | imGC.drawLine(x, 0, x, height); | |
221 | ||
222 | for (int j = 0, y = 0; y <= height && stepY > 0; j++, y = (int) (j * stepY)) | |
223 | imGC.drawLine(0, y, width, y); | |
224 | ||
225 | // imGC2.setBackground(Display.getDefault().getSystemColor(SWT.COLOR_BLUE)); | |
226 | // // //imGC.drawLine(0, height, width, (int)(getVisibleHeight()/zoomValue)); | |
227 | // imGC.fillRectangle(0,height,(int)(getVisibleWidth()/zoomValue), | |
228 | // (int)(getVisibleHeight()/zoomValue)-height); | |
229 | ||
230 | imGC2.dispose(); | |
231 | imGC.dispose(); | |
232 | return over; | |
233 | } | |
234 | ||
235 | @Override | |
236 | protected void drawContents(GC gc, int clipx, int clipy, int clipw, int cliph) { | |
237 | ||
238 | Image dbuffer = getDrawBuffer(gc); | |
239 | computeStepXY(); | |
240 | Image d; | |
241 | ||
242 | int lw = (int) (getContentsWidth() / zoomValue); | |
243 | if (getContentsWidth() < getVisibleWidth()) | |
244 | lw = (int) (getVisibleWidth() / zoomValue); | |
245 | ||
246 | int lh = (int) (getContentsHeight() / zoomValue); | |
247 | if (getContentsHeight() < getVisibleHeight()) | |
248 | lh = (int) (getVisibleHeight() / zoomValue); | |
249 | d = createPagesSelectionImages(dbuffer, lw, stepX, lh, stepY); | |
250 | ||
251 | if (!isEnabled()) { | |
252 | Image toDel = d; | |
253 | d = new Image(super.getShell().getDisplay(), drawRegionSelected(d, new Rectangle(0, 0, lw, lh), new RGB(221, 208, 200))); | |
254 | // d, new Rectangle(0,0,((int)(stepX*overviewCanvas.zoomValue)),((int)( | |
255 | // stepY*overviewCanvas.zoomValue))),new RGB(221,208,200))); | |
256 | toDel.dispose(); | |
257 | } | |
258 | ||
259 | Rectangle area = getClientArea(); | |
260 | int w = d.getBounds().width; | |
261 | int h = d.getBounds().height; | |
262 | gc.drawImage(d, 0, 0, w, h, 0, 0, area.width, area.height); | |
263 | ||
264 | totalPages.setText(Integer.valueOf(maxNumOfPages()).toString()); | |
265 | displayPageNum(); | |
266 | dbuffer.dispose(); | |
267 | d.dispose(); | |
268 | gc.dispose(); | |
269 | ||
270 | } | |
271 | ||
272 | @Override | |
273 | protected void keyPressedEvent(KeyEvent e) { | |
274 | if (e.keyCode == SWT.CTRL) | |
275 | multiSelection = true; | |
276 | if (e.keyCode == SWT.SHIFT) | |
277 | areaSelection = true; | |
278 | if (e.keyCode == SWT.ARROW_DOWN) { | |
279 | if (pageNum + getNbRow() <= maxNumOfPages()) | |
280 | pageNum += getNbRow(); | |
281 | int line = pageNum / getNbRow(); | |
282 | int row = pageNum % getNbRow(); | |
283 | if (row == 0) | |
284 | line--; | |
285 | if ((line + 1) * stepY > (overviewCanvas.getContentsY() + overviewCanvas.getVisibleHeight()) / overviewCanvas.zoomValue) | |
286 | overviewCanvas.scrollBy(0, (int) (stepY * overviewCanvas.zoomValue)); | |
287 | } | |
288 | if (e.keyCode == SWT.ARROW_UP) { | |
289 | if (pageNum - getNbRow() > 0) | |
290 | pageNum -= getNbRow(); | |
291 | int line = pageNum / getNbRow(); | |
292 | int row = pageNum % getNbRow(); | |
293 | if (row == 0) | |
294 | line--; | |
295 | if ((line) * stepY <= overviewCanvas.getContentsY() / overviewCanvas.zoomValue) | |
296 | overviewCanvas.scrollBy(0, -(int) (stepY * overviewCanvas.zoomValue)); | |
297 | } | |
298 | if (e.keyCode == SWT.ARROW_LEFT) { | |
299 | if ((pageNum - 2) / getNbRow() == (pageNum - 1) / getNbRow() && pageNum > 1) | |
300 | pageNum--; | |
301 | int row = pageNum % getNbRow(); | |
302 | if ((row - 1) * stepX < (overviewCanvas.getContentsX()) / overviewCanvas.zoomValue) | |
303 | overviewCanvas.scrollBy(-(int) (stepX * overviewCanvas.zoomValue), 0); | |
304 | } | |
305 | if (e.keyCode == SWT.ARROW_RIGHT) { | |
306 | if ((pageNum - 1) / getNbRow() == pageNum / getNbRow()) | |
307 | pageNum++; | |
308 | int row = pageNum % getNbRow(); | |
309 | if (row == 0) | |
310 | row = getNbRow(); | |
311 | if ((row) * stepX > (overviewCanvas.getContentsX() + overviewCanvas.getVisibleWidth()) / overviewCanvas.zoomValue) | |
312 | overviewCanvas.scrollBy((int) (stepX * overviewCanvas.zoomValue), 0); | |
313 | } | |
314 | ||
315 | if (e.keyCode == 32 && pageNum > -1) { | |
316 | Arrays.sort(pagesList); | |
317 | int pos = Arrays.binarySearch(pagesList, pageNum); | |
318 | if (pos < 0) | |
319 | addToPagesList(pageNum); | |
320 | else | |
321 | removeFromPagesList(pageNum); | |
322 | } | |
323 | ||
324 | if (!areaSelection && !multiSelection) { | |
325 | firstPage = pageNum; | |
326 | pagesList = new int[1]; | |
327 | pagesList[0] = pageNum; | |
328 | } else if ((pageNum != -1) && (areaSelection) && (firstPage != -1)) { | |
329 | pagesList = new int[0]; | |
330 | int line1 = firstPage / getNbRow(); | |
331 | int row1 = firstPage % getNbRow(); | |
332 | if (row1 != 0) | |
333 | line1++; | |
334 | else | |
335 | row1 = getNbRow(); | |
336 | ||
337 | int line2 = pageNum / getNbRow(); | |
338 | int row2 = pageNum % getNbRow(); | |
339 | if (row2 != 0) | |
340 | line2++; | |
341 | else | |
342 | row2 = getNbRow(); | |
343 | ||
344 | int temp; | |
345 | if (line1 > line2) { | |
346 | temp = line2; | |
347 | line2 = line1; | |
348 | line1 = temp; | |
349 | } | |
350 | ||
351 | if (row1 > row2) { | |
352 | temp = row2; | |
353 | row2 = row1; | |
354 | row1 = temp; | |
355 | } | |
356 | ||
357 | for (int i = row1 - 1; i < row2; i++) | |
358 | for (int j = line1 - 1; j < line2; j++) | |
359 | addToPagesList(i + j * getNbRow() + 1); | |
360 | ||
361 | } | |
362 | displayPageNum(); | |
363 | overviewCanvas.redraw(); | |
364 | } | |
365 | ||
366 | @Override | |
367 | protected void keyReleasedEvent(KeyEvent e) { | |
368 | if (e.keyCode == SWT.CTRL) | |
369 | multiSelection = false; | |
370 | if (e.keyCode == SWT.SHIFT) | |
371 | areaSelection = false; | |
372 | } | |
373 | ||
374 | @Override | |
375 | protected void contentsMouseDownEvent(MouseEvent event) { | |
376 | ||
377 | computeStepXY(); | |
378 | int x1 = (int) ((event.x / overviewCanvas.zoomValue) / stepX); | |
379 | int x2 = (int) ((event.y / overviewCanvas.zoomValue) / stepY); | |
380 | ||
381 | int oldPage = pageNum; | |
382 | ||
383 | pageNum = x1 + x2 * getNbRow() + 1; | |
384 | ||
385 | if (pageNum > maxNumOfPages()) { | |
386 | pageNum = oldPage; | |
387 | return; | |
388 | } | |
389 | ||
390 | if (!areaSelection) | |
391 | firstPage = pageNum; | |
392 | ||
393 | if ((pageNum != -1) && (multiSelection)) { | |
394 | Arrays.sort(pagesList); | |
395 | int pos = Arrays.binarySearch(pagesList, pageNum); | |
396 | if (pos < 0) | |
397 | addToPagesList(pageNum); | |
398 | else | |
399 | removeFromPagesList(pageNum); | |
400 | } else if ((pageNum != -1) && (areaSelection) && (firstPage != -1)) { | |
401 | ||
402 | pagesList = new int[0]; | |
403 | ||
404 | int line1 = firstPage / getNbRow(); | |
405 | int row1 = firstPage % getNbRow(); | |
406 | if (row1 != 0) | |
407 | line1++; | |
408 | else | |
409 | row1 = getNbRow(); | |
410 | ||
411 | int line2 = pageNum / getNbRow(); | |
412 | int row2 = pageNum % getNbRow(); | |
413 | if (row2 != 0) | |
414 | line2++; | |
415 | else | |
416 | row2 = getNbRow(); | |
417 | ||
418 | int temp; | |
419 | if (line1 > line2) { | |
420 | temp = line2; | |
421 | line2 = line1; | |
422 | line1 = temp; | |
423 | } | |
424 | ||
425 | if (row1 > row2) { | |
426 | temp = row2; | |
427 | row2 = row1; | |
428 | row1 = temp; | |
429 | } | |
430 | ||
431 | for (int i = row1 - 1; i < row2; i++) | |
432 | for (int j = line1 - 1; j < line2; j++) | |
433 | addToPagesList(i + j * getNbRow() + 1); | |
434 | } else { | |
435 | pagesList = new int[1]; | |
436 | pagesList[0] = pageNum; | |
437 | } | |
438 | if ((event.stateMask & SWT.CTRL) != 0) | |
439 | multiSelection = true; | |
440 | displayPageNum(); | |
441 | redraw(); | |
442 | } | |
443 | ||
444 | @Override | |
445 | protected void contentsMouseMoveEvent(MouseEvent e) { | |
446 | toolTip.hideToolTip(); | |
447 | } | |
448 | ||
449 | @Override | |
450 | public void resizeContents(int _w, int _h) { | |
73005152 | 451 | super.resizeContents(_w, _h); |
73005152 BH |
452 | } |
453 | ||
454 | } | |
455 | ||
456 | public SDPrintDialogUI(Shell s, SDWidget v) { | |
457 | ||
458 | this(s, v, false); | |
459 | ||
460 | } | |
461 | ||
462 | public SDPrintDialogUI(Shell s, SDWidget v, boolean showPrintBtn) { | |
463 | ||
464 | setShell(s); | |
465 | view = v; | |
466 | showPrintButton = showPrintBtn; | |
467 | ||
468 | printerData = Printer.getDefaultPrinterData(); | |
469 | if (printerData != null) { | |
470 | printerData.scope = PrinterData.SELECTION; | |
471 | } | |
472 | ||
473 | pagesList = new int[0]; | |
474 | ||
475 | selectionListener = new SelectionListener() { | |
476 | ||
477 | @Override | |
478 | public void widgetSelected(SelectionEvent e) { | |
479 | if (useCurrentZoom.getSelection()) { | |
480 | hPagesNum.setEnabled(false); | |
481 | vPagesNum.setEnabled(false); | |
482 | } | |
483 | if (setHPagesNumber.getSelection()) { | |
484 | hPagesNum.setEnabled(true); | |
485 | vPagesNum.setEnabled(false); | |
486 | if (currentPage.getSelection()) { | |
487 | currentPage.setSelection(false); | |
488 | allPages.setSelection(true); | |
489 | } | |
490 | if (hPagesNum.getText() == "") //$NON-NLS-1$ | |
491 | hPagesNum.setText("1"); //$NON-NLS-1$ | |
492 | } | |
493 | if (setVPagesNumber.getSelection()) { | |
494 | hPagesNum.setEnabled(false); | |
495 | vPagesNum.setEnabled(true); | |
496 | if (currentPage.getSelection()) { | |
497 | currentPage.setSelection(false); | |
498 | allPages.setSelection(true); | |
499 | } | |
500 | if (vPagesNum.getText() == "") //$NON-NLS-1$ | |
501 | vPagesNum.setText("1"); //$NON-NLS-1$ | |
502 | } | |
503 | if (currentPage.getSelection() || allPages.getSelection() || pageList.getSelection()) { | |
504 | fromPage.setEnabled(false); | |
505 | toPage.setEnabled(false); | |
506 | } else { | |
507 | fromPage.setEnabled(true); | |
508 | toPage.setEnabled(true); | |
509 | } | |
510 | ||
511 | currentPage.setEnabled(useCurrentZoom.getSelection()); | |
512 | overviewCanvas.setEnabled(pageList.getSelection()); | |
513 | if (overviewCanvas.isEnabled() && (e.widget == useCurrentZoom || e.widget == setHPagesNumber || e.widget == setVPagesNumber)) { | |
514 | pagesList = new int[1]; | |
515 | pagesList[0] = 1; | |
516 | pageNum = 1; | |
517 | firstPage = 1; | |
518 | } else if (overviewCanvas.isEnabled() && (e.widget == pageList)) { | |
519 | if (pagesList == null || pagesList.length <= 0) { | |
520 | pagesList = new int[1]; | |
521 | pagesList[0] = 1; | |
522 | pageNum = 1; | |
523 | firstPage = 1; | |
524 | } | |
525 | } | |
526 | computeStepXY(); | |
527 | totalPages.setText(Integer.valueOf(maxNumOfPages()).toString()); | |
528 | overviewCanvas.redraw(); | |
529 | overviewCanvas.update(); | |
530 | } | |
531 | ||
532 | @Override | |
533 | public void widgetDefaultSelected(SelectionEvent e) { | |
534 | pagesList = new int[0]; | |
535 | computeStepXY(); | |
536 | overviewCanvas.redraw(); | |
537 | } | |
538 | ||
539 | }; | |
540 | ||
541 | modifyListener = new ModifyListener() { | |
542 | ||
543 | @Override | |
544 | public void modifyText(ModifyEvent e) { | |
545 | pagesList = new int[0]; | |
546 | computeStepXY(); | |
547 | totalPages.setText(Integer.valueOf(maxNumOfPages()).toString()); | |
548 | overviewCanvas.redraw(); | |
549 | } | |
550 | ||
551 | }; | |
552 | } | |
553 | ||
554 | protected GridData newGridData(int span) { | |
555 | GridData data = new GridData(GridData.GRAB_VERTICAL | GridData.VERTICAL_ALIGN_FILL | GridData.GRAB_HORIZONTAL | GridData.HORIZONTAL_ALIGN_FILL); | |
556 | data.horizontalSpan = span; | |
557 | return data; | |
558 | } | |
559 | ||
560 | public Control createDialogArea(Composite parent) { | |
561 | ||
562 | GridLayout parentLayout = new GridLayout(); | |
563 | parentLayout.numColumns = 6; | |
564 | parent.setLayout(parentLayout); | |
565 | ||
566 | Group g1 = new Group(parent, SWT.SHADOW_NONE); | |
567 | g1.setText(SDMessages._113); | |
568 | g1.setLayoutData(newGridData(3)); | |
569 | GridLayout g1layout = new GridLayout(); | |
570 | g1layout.numColumns = 2; | |
571 | g1.setLayout(g1layout); | |
572 | ||
573 | useCurrentZoom = new Button(g1, SWT.RADIO); | |
574 | useCurrentZoom.setText(SDMessages._112); | |
575 | useCurrentZoom.setLayoutData(newGridData(2)); | |
576 | useCurrentZoom.addSelectionListener(selectionListener); | |
577 | ||
578 | setHPagesNumber = new Button(g1, SWT.RADIO); | |
579 | setHPagesNumber.setText(SDMessages._110); | |
580 | setHPagesNumber.setLayoutData(newGridData(1)); | |
581 | setHPagesNumber.addSelectionListener(selectionListener); | |
582 | ||
583 | hPagesNum = new Text(g1, SWT.SINGLE | SWT.BORDER); | |
584 | hPagesNum.addModifyListener(modifyListener); | |
585 | ||
586 | setVPagesNumber = new Button(g1, SWT.RADIO); | |
587 | setVPagesNumber.setText(SDMessages._111); | |
588 | setVPagesNumber.setLayoutData(newGridData(1)); | |
589 | setVPagesNumber.addSelectionListener(selectionListener); | |
590 | ||
591 | vPagesNum = new Text(g1, SWT.SINGLE | SWT.BORDER); | |
592 | vPagesNum.addModifyListener(modifyListener); | |
593 | ||
594 | Label nbTotal = new Label(g1, SWT.SHADOW_NONE | SWT.RIGHT); | |
595 | nbTotal.setText(SDMessages._109); | |
596 | // nbTotal.setLayoutData(newGridData(1)); | |
597 | ||
598 | totalPages = new Text(g1, SWT.SINGLE | SWT.BORDER | SWT.READ_ONLY); | |
599 | // nbHV.addModifyListener(modifListener); | |
600 | ||
601 | Group g2 = new Group(parent, SWT.SHADOW_NONE); | |
602 | g2.setText(SDMessages._119); | |
603 | GridData data = new GridData(GridData.GRAB_VERTICAL | GridData.VERTICAL_ALIGN_FILL | GridData.GRAB_HORIZONTAL | GridData.HORIZONTAL_ALIGN_FILL); | |
604 | data.horizontalSpan = 3; | |
605 | data.verticalSpan = 2; | |
606 | g2.setLayoutData(data); | |
607 | GridLayout g2layout = new GridLayout(); | |
608 | // g2layout. | |
609 | g2layout.numColumns = 1; | |
610 | // SVLayout g2layout = new SVLayout(); | |
611 | g2.setLayout(g2layout); | |
612 | ||
613 | GridData data2 = new GridData(GridData.GRAB_VERTICAL | GridData.VERTICAL_ALIGN_FILL | GridData.GRAB_HORIZONTAL | GridData.HORIZONTAL_ALIGN_FILL); | |
614 | data2.horizontalSpan = 1; | |
615 | data2.verticalSpan = 1; | |
616 | ||
617 | overviewCanvas = new LocalSD(g2, SWT.NO_BACKGROUND); | |
618 | GridData seqDiagLayoutData = new GridData(GridData.HORIZONTAL_ALIGN_FILL// |GridData.GRAB_HORIZONTAL| | |
619 | /* GridData.GRAB_VERTICAL| */| GridData.VERTICAL_ALIGN_FILL); | |
620 | // seqDiagLayoutData.widthHint=400; | |
621 | // seqDiagLayoutData.horizontalAlignment=GridData.HORIZONTAL_ALIGN_FILL; | |
622 | overviewCanvas.setLayoutData(seqDiagLayoutData); | |
623 | // overviewCanvas.resizeContents(100,100); | |
624 | if (view.getContentsWidth() < view.getVisibleWidth() && view.getContentsHeight() < view.getVisibleHeight()) | |
625 | test = 3; | |
626 | else | |
627 | test = 10; | |
628 | overviewCanvas.setFrame(view.getFrame(), true); | |
629 | overviewCanvas.zoomValue = (float) 1 / test; | |
630 | overviewCanvas.setCornerControl(null); | |
631 | seqDiagLayoutData.widthHint = overviewCanvas.getContentsWidth() / test; | |
632 | seqDiagLayoutData.widthHint = overviewCanvas.getFrame().getWidth() / test + 15; | |
633 | ||
634 | if (view.getVisibleWidth() < view.getContentsWidth()) { | |
635 | seqDiagLayoutData.widthHint = overviewCanvas.getContentsWidth() / test; | |
636 | if (seqDiagLayoutData.widthHint > Display.getDefault().getClientArea().width / 4) | |
637 | seqDiagLayoutData.widthHint = Display.getDefault().getClientArea().width / 4; | |
638 | } else | |
639 | seqDiagLayoutData.widthHint = overviewCanvas.getFrame().getWidth() / test + 15; | |
640 | ||
641 | if (view.getVisibleHeight() < view.getContentsHeight()) { | |
642 | seqDiagLayoutData.heightHint = overviewCanvas.getContentsHeight() / test; | |
643 | if (seqDiagLayoutData.heightHint > Display.getDefault().getClientArea().width / 4) | |
644 | seqDiagLayoutData.heightHint = Display.getDefault().getClientArea().width / 4; | |
645 | } else | |
646 | seqDiagLayoutData.heightHint = overviewCanvas.getFrame().getHeight() / test; | |
647 | ||
648 | overviewCanvas.setEnabled(false); | |
649 | ||
650 | currentSelection = new Label(g2, SWT.SHADOW_NONE | SWT.LEFT); | |
651 | currentSelection.setLayoutData(newGridData(1)); | |
652 | ||
653 | Group g3 = new Group(parent, SWT.SHADOW_NONE); | |
654 | g3.setText(SDMessages._118); | |
655 | g3.setLayoutData(newGridData(3)); | |
656 | GridLayout g3layout = new GridLayout(); | |
657 | g3layout.numColumns = 4; | |
658 | g3.setLayout(g3layout); | |
659 | ||
660 | allPages = new Button(g3, SWT.RADIO); | |
661 | allPages.setText(SDMessages._108); | |
662 | allPages.setLayoutData(newGridData(4)); | |
663 | allPages.addSelectionListener(selectionListener); | |
664 | ||
665 | currentPage = new Button(g3, SWT.RADIO); | |
666 | currentPage.setText(SDMessages._107); | |
667 | currentPage.setLayoutData(newGridData(4)); | |
668 | currentPage.setEnabled(true); | |
669 | currentPage.setSelection(true); | |
670 | currentPage.addSelectionListener(selectionListener); | |
671 | ||
672 | pageList = new Button(g3, SWT.RADIO); | |
673 | pageList.setText(SDMessages._106); | |
674 | pageList.setLayoutData(newGridData(4)); | |
675 | pageList.addSelectionListener(selectionListener); | |
676 | ||
677 | pageRange = new Button(g3, SWT.RADIO); | |
678 | pageRange.setText(SDMessages._103); | |
679 | pageRange.setLayoutData(newGridData(1)); | |
680 | pageRange.addSelectionListener(selectionListener); | |
681 | ||
682 | fromPage = new Text(g3, SWT.SINGLE | SWT.BORDER); | |
683 | ||
684 | Label labelTo = new Label(g3, SWT.CENTER); | |
685 | labelTo.setText(SDMessages._105); | |
686 | ||
687 | toPage = new Text(g3, SWT.SINGLE | SWT.BORDER); | |
688 | ||
689 | toolTip = new DiagramToolTip(overviewCanvas); | |
690 | ||
691 | overviewCanvas.getViewControl().addMouseTrackListener(new MouseTrackListener() { | |
692 | ||
693 | @Override | |
694 | public void mouseEnter(MouseEvent e) { | |
695 | toolTip.hideToolTip(); | |
696 | } | |
697 | ||
698 | @Override | |
699 | public void mouseExit(MouseEvent e) { | |
700 | toolTip.hideToolTip(); | |
701 | } | |
702 | ||
703 | @Override | |
704 | public void mouseHover(MouseEvent e) { | |
705 | int x1 = (int) (overviewCanvas.viewToContentsX(e.x) / overviewCanvas.zoomValue / stepX); | |
706 | int x2 = (int) (overviewCanvas.viewToContentsY(e.y) / overviewCanvas.zoomValue / stepY); | |
707 | int num = x1 + x2 * getNbRow() + 1; | |
708 | if (num > maxNumOfPages()) | |
709 | return; | |
710 | if (num > 0) { | |
711 | toolTip.showToolTip(String.valueOf(num)); | |
712 | displayPageNum(); | |
713 | } else { | |
714 | currentSelection.setText("");//$NON-NLS-1$ | |
715 | toolTip.hideToolTip(); | |
716 | } | |
717 | } | |
718 | ||
719 | }); | |
720 | ||
721 | overviewCanvas.addTraverseListener(new TraverseListener() { | |
722 | ||
723 | @Override | |
724 | public void keyTraversed(TraverseEvent e) { | |
725 | if ((e.detail == SWT.TRAVERSE_TAB_NEXT) || (e.detail == SWT.TRAVERSE_TAB_PREVIOUS)) | |
726 | e.doit = true; | |
727 | } | |
728 | ||
729 | }); | |
730 | ||
731 | overviewCanvas.addFocusListener(new FocusListener() { | |
732 | ||
733 | @Override | |
734 | public void focusGained(FocusEvent e) { | |
735 | overviewCanvas.redraw(); | |
736 | } | |
737 | ||
738 | @Override | |
739 | public void focusLost(FocusEvent e) { | |
740 | overviewCanvas.redraw(); | |
741 | } | |
742 | }); | |
743 | ||
744 | if (showPrintButton) { | |
745 | Composite printerDlg = new Composite(parent, SWT.NONE); | |
746 | data = GridUtil.createHorizontalFill(); | |
747 | data.horizontalSpan = 6; | |
748 | parentLayout = new GridLayout(); | |
749 | parentLayout.numColumns = 2; | |
750 | printerDlg.setLayout(parentLayout); | |
751 | printerDlg.setLayoutData(data); | |
752 | ||
753 | Label label = new Label(printerDlg, SWT.NONE); | |
754 | label.setLayoutData(GridUtil.createHorizontalFill()); | |
755 | printerDialog = new Button(printerDlg, SWT.PUSH); | |
756 | printerDialog.setText(SDMessages._115); | |
757 | ||
758 | printerDialog.addSelectionListener(new SelectionListener() { | |
759 | ||
760 | @Override | |
761 | public void widgetSelected(SelectionEvent e) { | |
762 | ||
763 | printButtonSelected(); | |
764 | } | |
765 | ||
766 | @Override | |
767 | public void widgetDefaultSelected(SelectionEvent e) { | |
768 | } | |
769 | ||
770 | }); | |
771 | } | |
772 | ||
773 | updatePrinterStatus(); | |
774 | ||
775 | return parent; | |
776 | } | |
777 | ||
778 | public int getPagesForSelection() { | |
779 | return nbPages; | |
780 | } | |
781 | ||
782 | public boolean okPressed() { | |
783 | printAll = allPages.getSelection(); | |
784 | printCurrent = currentPage.getSelection(); | |
785 | printSelection = pageList.getSelection(); | |
786 | printRange = pageRange.getSelection(); | |
787 | try { | |
788 | if (printRange) { | |
789 | from = Integer.valueOf(fromPage.getText()).intValue(); | |
790 | to = Integer.valueOf(toPage.getText()).intValue(); | |
791 | if (from > maxNumOfPages() || to > maxNumOfPages() || from <= 0 || to <= 0) { | |
792 | MessageDialog.openError(getShell(), SDMessages._98, SDMessages._99); | |
793 | return false; | |
794 | } | |
795 | } else if (setHPagesNumber.getSelection() && nbPages <= 0) { | |
796 | MessageDialog.openError(getShell(), SDMessages._98, SDMessages._101); | |
797 | return false; | |
798 | } else if (setVPagesNumber.getSelection() && nbPages <= 0) { | |
799 | MessageDialog.openError(getShell(), SDMessages._98, SDMessages._100); | |
800 | return false; | |
801 | } else if (printSelection && getPageList().length <= 0) { | |
802 | MessageDialog.openError(getShell(), SDMessages._98, SDMessages._102); | |
803 | return false; | |
804 | } | |
805 | ||
806 | } catch (Exception e) { | |
807 | MessageDialog.openError(getShell(), SDMessages._98, SDMessages._99); | |
808 | from = 0; | |
809 | to = 0; | |
810 | return false; | |
811 | } | |
812 | ||
813 | return true; | |
814 | } | |
815 | ||
816 | public ImageData drawRegionSelected(Image img, Rectangle r, RGB color) { | |
817 | ImageData id = img.getImageData(); | |
818 | for (int a = 0; a < r.width && r.x + a < id.width; a++) { | |
819 | for (int b = 0; b < r.height && r.y + b < id.height; b++) { | |
820 | int index = id.getPixel(r.x + a, r.y + b); | |
821 | RGB rgb = id.palette.getRGB(index); | |
822 | rgb = combine(color, rgb); | |
823 | id.setPixel(r.x + a, r.y + b, id.palette.getPixel(rgb)); | |
824 | } | |
825 | } | |
826 | return id; | |
827 | } | |
828 | ||
829 | public static RGB combine(RGB front, RGB back) { | |
830 | int _af = 128; | |
831 | if (_af == 1) | |
832 | return front; | |
833 | if (_af == 0) | |
834 | return back; | |
835 | int _ab = 200; | |
836 | if (_ab == 0) | |
837 | return front; | |
838 | ||
839 | double af = (_af) / 255.0; | |
840 | double rf = front.red; | |
841 | double gf = front.green; | |
842 | double bf = front.blue; | |
843 | ||
844 | double ab = (_ab) / 255.0; | |
845 | double rb = back.red; | |
846 | double gb = back.green; | |
847 | double bb = back.blue; | |
848 | ||
849 | double k = (1.0 - af) * ab; | |
850 | int r = (int) ((af * rf + k * rb)); | |
851 | int g = (int) ((af * gf + k * gb)); | |
852 | int b = (int) ((af * bf + k * bb)); | |
853 | ||
854 | return new RGB(r, g, b); | |
855 | } | |
856 | ||
857 | protected void computeStepXY() { | |
858 | float cw = overviewCanvas.getContentsWidth() / overviewCanvas.zoomValue; | |
859 | float ch = overviewCanvas.getContentsHeight() / overviewCanvas.zoomValue; | |
860 | try { | |
861 | if (printerData == null) { | |
862 | stepX = 0; | |
863 | stepY = 0; | |
864 | nbPages = 0; | |
865 | zoomFactor = 0; | |
866 | } else { | |
867 | Printer printer = new Printer(printerData); | |
868 | if (setHPagesNumber.getSelection()) { | |
869 | nbPages = Integer.valueOf(hPagesNum.getText()).intValue(); | |
870 | float z1 = (float) view.getContentsWidth() / (cw); | |
871 | float z2 = printer.getClientArea().width / ((float) view.getContentsWidth() / nbPages); | |
872 | ||
873 | stepY = printer.getClientArea().height / z1 / z2; | |
874 | stepX = cw / nbPages; | |
875 | } else if (setVPagesNumber.getSelection()) { | |
876 | nbPages = Integer.valueOf(vPagesNum.getText()).intValue(); | |
877 | float z1 = (float) view.getContentsHeight() / (ch); | |
878 | float z2 = printer.getClientArea().height / ((float) view.getContentsHeight() / nbPages); | |
879 | stepX = printer.getClientArea().width / z1 / z2; | |
880 | stepY = ch / nbPages; | |
881 | } else { | |
882 | float z1 = view.getContentsWidth() / (cw); | |
883 | stepX = ((float) view.getVisibleWidth() / z1); | |
884 | nbPages = Math.round(cw / stepX); | |
885 | if (nbPages == 0) | |
886 | nbPages = 1; | |
887 | int pw = printer.getClientArea().width; | |
888 | int ph = printer.getClientArea().height; | |
889 | float z2 = pw / ((float) view.getContentsWidth() / nbPages); | |
890 | stepY = ((float) ph / z1 / z2); | |
891 | } | |
892 | } | |
e6ace8bb | 893 | } catch (NumberFormatException e) { |
73005152 BH |
894 | stepX = stepY = nbPages = 0; |
895 | zoomFactor = 0; | |
896 | } | |
897 | sTX = stepX * (view.getContentsWidth() / cw); | |
898 | sTY = stepY * (view.getContentsHeight() / ch); | |
899 | float rat = 1; | |
900 | if ((view.getVisibleWidth() > view.getContentsWidth()) && (setVPagesNumber.getSelection() || setHPagesNumber.getSelection())) | |
901 | rat = (float) view.getVisibleWidth() / (float) view.getContentsWidth(); | |
902 | zoomFactor = (overviewCanvas.getContentsWidth() / cw) / overviewCanvas.getZoomFactor() * rat;// /view.getZoomFactor(); | |
903 | } | |
904 | ||
905 | public int[] getPageList() { | |
e6ace8bb | 906 | return Arrays.copyOf(pagesList, pagesList.length); |
73005152 BH |
907 | } |
908 | ||
909 | public void addToPagesList(int num) { | |
910 | int temp[] = new int[pagesList.length + 1]; | |
911 | System.arraycopy(pagesList, 0, temp, 0, pagesList.length); | |
912 | temp[temp.length - 1] = num; | |
913 | pagesList = new int[temp.length]; | |
914 | System.arraycopy(temp, 0, pagesList, 0, temp.length); | |
915 | } | |
916 | ||
917 | public void removeFromPagesList(int num) { | |
918 | int pos = Arrays.binarySearch(pagesList, num); | |
919 | int temp[] = new int[pagesList.length - 1]; | |
920 | System.arraycopy(pagesList, 0, temp, 0, pos); | |
921 | System.arraycopy(pagesList, pos + 1, temp, pos, pagesList.length - pos - 1); | |
922 | pagesList = new int[temp.length]; | |
923 | System.arraycopy(temp, 0, pagesList, 0, temp.length); | |
924 | } | |
925 | ||
926 | public int maxNumOfPages() { | |
927 | int max = getNbRow() * getNbLines(); | |
928 | return max; | |
929 | } | |
930 | ||
931 | public int getNbRow() { | |
932 | if (!setHPagesNumber.isDisposed()) { | |
933 | int cw = (int) (overviewCanvas.getContentsWidth() / overviewCanvas.zoomValue); | |
e6ace8bb BH |
934 | int row = 1; |
935 | if (stepX != 0) { | |
936 | row = (int) (cw / stepX); | |
937 | if (setHPagesNumber.getSelection()) | |
938 | row = Math.round((float) cw / stepX); | |
939 | else if ((cw % stepX != 0)) | |
940 | row++; | |
941 | } | |
73005152 BH |
942 | nbRows = row; |
943 | } | |
944 | return nbRows; | |
945 | } | |
946 | ||
947 | public int getNbLines() { | |
948 | if (!setVPagesNumber.isDisposed()) { | |
949 | int ch = (int) (overviewCanvas.getContentsHeight() / overviewCanvas.zoomValue); | |
e6ace8bb BH |
950 | int line = 1; |
951 | if (stepY != 0) { | |
952 | line = (int) (ch / stepY); | |
953 | if (setVPagesNumber.getSelection()) | |
954 | line = Math.round((float) ch / stepY); | |
955 | else if (ch % stepY != 0) | |
956 | line++; | |
957 | } | |
73005152 BH |
958 | nbLines = line; |
959 | } | |
960 | return nbLines; | |
961 | } | |
962 | ||
963 | public boolean printAll() { | |
964 | return printAll; | |
965 | } | |
966 | ||
967 | public boolean printCurrent() { | |
968 | return printCurrent; | |
969 | } | |
970 | ||
971 | public boolean printSelection() { | |
972 | return printSelection; | |
973 | } | |
974 | ||
975 | public boolean printRange() { | |
976 | return printRange; | |
977 | } | |
978 | ||
979 | public float getStepX() { | |
980 | return sTX; | |
981 | } | |
982 | ||
983 | public float getStepY() { | |
984 | return sTY; | |
985 | } | |
986 | ||
987 | public float getZoomFactor() { | |
988 | return zoomFactor; | |
989 | } | |
990 | ||
991 | // public abstract void createButtonsForButtonBar(Composite parent); | |
992 | ||
993 | public PrinterData getPrinterData() { | |
994 | return printerData; | |
995 | } | |
996 | ||
997 | public int getFrom() { | |
998 | return from; | |
999 | } | |
1000 | ||
1001 | public int getTo() { | |
1002 | return to; | |
1003 | } | |
1004 | ||
1005 | protected void displayPageNum() { | |
1006 | if (pageNum > 0) { | |
1007 | String message = MessageFormat.format(SDMessages._117, new Object[] { Integer.valueOf(pageNum) }); | |
1008 | currentSelection.setText(message); | |
1009 | currentSelection.getParent().layout(); | |
1010 | } | |
1011 | } | |
1012 | ||
1013 | public Shell getShell() { | |
1014 | return shell; | |
1015 | } | |
1016 | ||
1017 | public void setShell(Shell shell) { | |
1018 | this.shell = shell; | |
1019 | } | |
1020 | ||
1021 | public void printButtonSelected() { | |
1022 | PrintDialog printer = new PrintDialog(getShell()); | |
1023 | if (allPages.getSelection()) | |
1024 | printer.setScope(PrinterData.ALL_PAGES); | |
1025 | if (currentPage.getSelection()) | |
1026 | printer.setScope(PrinterData.SELECTION); | |
1027 | if (pageList.getSelection()) | |
1028 | printer.setScope(PrinterData.SELECTION); | |
1029 | if (pageRange.getSelection()) { | |
1030 | printer.setScope(PrinterData.PAGE_RANGE); | |
1031 | from = Integer.valueOf(fromPage.getText()).intValue(); | |
1032 | to = Integer.valueOf(toPage.getText()).intValue(); | |
1033 | printer.setStartPage(from); | |
1034 | printer.setEndPage(to); | |
1035 | } | |
1036 | ||
1037 | PrinterData newPrinterData = printer.open(); | |
1038 | if (newPrinterData != null) { | |
1039 | printerData = newPrinterData; | |
1040 | } | |
1041 | updatePrinterStatus(); | |
1042 | ||
1043 | if (printer.getScope() == PrinterData.ALL_PAGES) { | |
1044 | allPages.setSelection(true); | |
1045 | currentPage.setSelection(false); | |
1046 | pageList.setSelection(false); | |
1047 | pageRange.setSelection(false); | |
1048 | hPagesNum.setEnabled(false); | |
1049 | vPagesNum.setEnabled(false); | |
1050 | } | |
1051 | if (printer.getScope() == PrinterData.PAGE_RANGE) { | |
1052 | allPages.setSelection(false); | |
1053 | currentPage.setSelection(false); | |
1054 | pageList.setSelection(false); | |
1055 | pageRange.setSelection(true); | |
1056 | fromPage.setEnabled(true); | |
1057 | toPage.setEnabled(true); | |
1058 | fromPage.setText((Integer.valueOf(printer.getStartPage())).toString()); | |
1059 | toPage.setText((Integer.valueOf(printer.getEndPage())).toString()); | |
1060 | } | |
1061 | computeStepXY(); | |
1062 | overviewCanvas.redraw(); | |
1063 | } | |
1064 | ||
1065 | public void setParentWizardPage(WizardPage parent) { | |
1066 | parentWizardPage = parent; | |
1067 | } | |
1068 | ||
1069 | public void setParentDialog(SDPrintDialog parent) { | |
1070 | parentDialog = parent; | |
1071 | } | |
1072 | ||
1073 | protected void updatePrinterStatus() { | |
1074 | if (parentWizardPage != null) { | |
1075 | // used in the wizard dialog | |
1076 | if (printerData == null) { | |
1077 | // show error message and disable Finish button | |
1078 | parentWizardPage.setErrorMessage(SDMessages._135); | |
1079 | parentWizardPage.setPageComplete(false); | |
1080 | } else { | |
1081 | // clear error message and enable Finish button | |
1082 | parentWizardPage.setErrorMessage(null); | |
1083 | parentWizardPage.setPageComplete(true); | |
1084 | } | |
1085 | } else if (parentDialog != null) { | |
1086 | // used in the print dialog | |
1087 | if (printerData == null) { | |
1088 | // show error message and disable OK button | |
1089 | parentDialog.setErrorMessage(SDMessages._135); | |
1090 | parentDialog.setPageComplete(false); | |
1091 | } else { | |
1092 | // clear error message and enable OK button | |
1093 | parentDialog.setErrorMessage(null); | |
1094 | parentDialog.setPageComplete(true); | |
1095 | } | |
1096 | } | |
1097 | } | |
1098 | ||
1099 | } |