KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > apache > directory > ldapstudio > valueeditors > image > ImageDialog


1 /*
2  * Licensed to the Apache Software Foundation (ASF) under one
3  * or more contributor license agreements. See the NOTICE file
4  * distributed with this work for additional information
5  * regarding copyright ownership. The ASF licenses this file
6  * to you under the Apache License, Version 2.0 (the
7  * "License"); you may not use this file except in compliance
8  * with the License. You may obtain a copy of the License at
9  *
10  * http://www.apache.org/licenses/LICENSE-2.0
11  *
12  * Unless required by applicable law or agreed to in writing,
13  * software distributed under the License is distributed on an
14  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
15  * KIND, either express or implied. See the License for the
16  * specific language governing permissions and limitations
17  * under the License.
18  *
19  */

20
21 package org.apache.directory.ldapstudio.valueeditors.image;
22
23
24 import java.io.ByteArrayInputStream JavaDoc;
25 import java.io.ByteArrayOutputStream JavaDoc;
26 import java.io.File JavaDoc;
27 import java.io.FileInputStream JavaDoc;
28 import java.io.FileNotFoundException JavaDoc;
29 import java.io.FileOutputStream JavaDoc;
30 import java.io.IOException JavaDoc;
31
32 import org.apache.directory.ldapstudio.browser.common.BrowserCommonActivator;
33 import org.apache.directory.ldapstudio.browser.common.widgets.BaseWidgetUtils;
34 import org.apache.directory.ldapstudio.valueeditors.ValueEditorsActivator;
35 import org.apache.directory.ldapstudio.valueeditors.ValueEditorsConstants;
36 import org.eclipse.core.runtime.IStatus;
37 import org.eclipse.core.runtime.Status;
38 import org.eclipse.jface.dialogs.Dialog;
39 import org.eclipse.jface.dialogs.IDialogConstants;
40 import org.eclipse.swt.SWT;
41 import org.eclipse.swt.SWTException;
42 import org.eclipse.swt.events.ModifyEvent;
43 import org.eclipse.swt.events.ModifyListener;
44 import org.eclipse.swt.events.SelectionAdapter;
45 import org.eclipse.swt.events.SelectionEvent;
46 import org.eclipse.swt.graphics.Image;
47 import org.eclipse.swt.graphics.ImageData;
48 import org.eclipse.swt.graphics.ImageLoader;
49 import org.eclipse.swt.layout.GridData;
50 import org.eclipse.swt.layout.GridLayout;
51 import org.eclipse.swt.widgets.Button;
52 import org.eclipse.swt.widgets.Composite;
53 import org.eclipse.swt.widgets.Control;
54 import org.eclipse.swt.widgets.FileDialog;
55 import org.eclipse.swt.widgets.Label;
56 import org.eclipse.swt.widgets.Shell;
57 import org.eclipse.swt.widgets.TabFolder;
58 import org.eclipse.swt.widgets.TabItem;
59 import org.eclipse.swt.widgets.Text;
60
61
62 public class ImageDialog extends Dialog
63 {
64
65     public static final String JavaDoc DIALOG_TITLE = "Image Editor";
66
67     // public static final String[] IMAGE_FILE_EXTENSIONS = {"*.jpg; *.jpeg;
68
// *.gif; *.bmp; *.png"};
69
public static final int MAX_WIDTH = 250;
70
71     public static final int MAX_HEIGHT = 250;
72
73     public static final int CURRENT_TAB = 0;
74
75     public static final int NEW_TAB = 1;
76
77     public static final String JavaDoc SELECTED_TAB_DIALOGSETTINGS_KEY = ImageDialog.class.getName() + ".tab";
78
79     private TabFolder tabFolder;
80
81     private TabItem currentTab;
82
83     private TabItem newTab;
84
85     private byte[] currentImageRawData;
86
87     private Image currentImage;
88
89     private Composite currentImageContainer;
90
91     private Label currentImageLabel;
92
93     private Text currentImageTypeText;
94
95     private Text currentImageWidthText;
96
97     private Text currentImageHeightText;
98
99     private Text currentImageSizeText;
100
101     private Button currentImageSaveButton;
102
103     private byte[] newImageRawData;
104
105     private Image newImage;
106
107     private Composite newImageContainer;
108
109     private Label newImageLabel;
110
111     private Text newImageTypeText;
112
113     private Text newImageWidthText;
114
115     private Text newImageHeightText;
116
117     private Text newImageSizeText;
118
119     private Text newImageFilenameText;
120
121     private Button newImageBrowseButton;
122
123     private int requiredImageType;
124
125     private byte[] newImageRawDataInRequiredFormat;
126
127     private Button okButton;
128
129
130     public ImageDialog( Shell parentShell, byte[] currentImageRawData, int requiredImageType )
131     {
132         super( parentShell );
133         super.setShellStyle( super.getShellStyle() | SWT.RESIZE );
134         this.currentImageRawData = currentImageRawData;
135         this.requiredImageType = requiredImageType;
136
137         newImageRawDataInRequiredFormat = null;
138     }
139
140
141     public boolean close()
142     {
143         if ( this.currentImage != null && !this.currentImage.isDisposed() )
144         {
145             this.currentImage.dispose();
146         }
147         if ( this.newImage != null && !this.newImage.isDisposed() )
148         {
149             this.newImage.dispose();
150         }
151
152         // save selected tab to dialog settings
153
ValueEditorsActivator.getDefault().getDialogSettings().put( SELECTED_TAB_DIALOGSETTINGS_KEY,
154             this.tabFolder.getSelectionIndex() );
155
156         return super.close();
157     }
158
159
160     protected void buttonPressed( int buttonId )
161     {
162         if ( buttonId == IDialogConstants.OK_ID )
163         {
164             if ( this.newImageRawData != null )
165             {
166                 try
167                 {
168                     ImageData imageData = new ImageData( new ByteArrayInputStream JavaDoc( this.newImageRawData ) );
169                     if ( imageData.type != this.requiredImageType )
170                     {
171                         ImageLoader imageLoader = new ImageLoader();
172                         imageLoader.data = new ImageData[]
173                             { imageData };
174                         ByteArrayOutputStream JavaDoc baos = new ByteArrayOutputStream JavaDoc();
175                         imageLoader.save( baos, this.requiredImageType );
176                         this.newImageRawDataInRequiredFormat = baos.toByteArray();
177                     }
178                     else
179                     {
180                         this.newImageRawDataInRequiredFormat = this.newImageRawData;
181                     }
182                 }
183                 catch ( SWTException swte )
184                 {
185                     this.newImageRawDataInRequiredFormat = null;
186                 }
187             }
188
189         }
190         else
191         {
192             this.newImageRawDataInRequiredFormat = null;
193         }
194
195         super.buttonPressed( buttonId );
196     }
197
198
199     protected void configureShell( Shell shell )
200     {
201         super.configureShell( shell );
202         shell.setText( DIALOG_TITLE );
203         shell.setImage( ValueEditorsActivator.getDefault().getImage( ValueEditorsConstants.IMG_IMAGEEDITOR ) );
204     }
205
206
207     protected void createButtonsForButtonBar( Composite parent )
208     {
209         okButton = createButton( parent, IDialogConstants.OK_ID, IDialogConstants.OK_LABEL, false );
210         createButton( parent, IDialogConstants.CANCEL_ID, IDialogConstants.CANCEL_LABEL, false );
211
212         // load dialog settings
213
try
214         {
215             int tabIndex = ValueEditorsActivator.getDefault().getDialogSettings().getInt( SELECTED_TAB_DIALOGSETTINGS_KEY );
216             this.tabFolder.setSelection( tabIndex );
217         }
218         catch ( Exception JavaDoc e )
219         {
220         }
221
222         // update on load
223
updateTabFolder();
224     }
225
226
227     protected Control createDialogArea( Composite parent )
228     {
229
230         Composite composite = ( Composite ) super.createDialogArea( parent );
231         GridData gd1 = new GridData( GridData.FILL_BOTH );
232         gd1.widthHint = convertHorizontalDLUsToPixels( IDialogConstants.MINIMUM_MESSAGE_AREA_WIDTH );
233         gd1.heightHint = convertVerticalDLUsToPixels( IDialogConstants.MINIMUM_MESSAGE_AREA_WIDTH );
234         composite.setLayoutData( gd1 );
235
236         this.tabFolder = new TabFolder( composite, SWT.TOP );
237         GridLayout mainLayout = new GridLayout();
238         mainLayout.marginWidth = 0;
239         mainLayout.marginHeight = 0;
240         this.tabFolder.setLayout( mainLayout );
241         this.tabFolder.setLayoutData( new GridData( GridData.FILL_BOTH ) );
242         this.tabFolder.addSelectionListener( new SelectionAdapter()
243         {
244             public void widgetSelected( SelectionEvent e )
245             {
246                 updateTabFolder();
247             }
248         } );
249
250         // current image
251
if ( this.currentImageRawData != null && this.currentImageRawData.length > 0 )
252         {
253             currentImageContainer = new Composite( this.tabFolder, SWT.NONE );
254             GridLayout currentLayout = new GridLayout( 1, false );
255             currentLayout.marginHeight = convertVerticalDLUsToPixels( IDialogConstants.VERTICAL_MARGIN );
256             currentLayout.marginWidth = convertHorizontalDLUsToPixels( IDialogConstants.HORIZONTAL_MARGIN );
257             currentLayout.verticalSpacing = convertVerticalDLUsToPixels( IDialogConstants.VERTICAL_SPACING );
258             currentLayout.horizontalSpacing = convertHorizontalDLUsToPixels( IDialogConstants.HORIZONTAL_SPACING );
259             currentImageContainer.setLayout( currentLayout );
260             currentImageContainer.setLayoutData( new GridData( GridData.FILL_HORIZONTAL ) );
261
262             currentImageLabel = createImageLabel( currentImageContainer );
263
264             Composite currentImageInfoContainer = createImageInfoContainer( currentImageContainer );
265             currentImageTypeText = createImageInfo( currentImageInfoContainer, "Image Type:" );
266             currentImageSizeText = createImageInfo( currentImageInfoContainer, "Image Size:" );
267             currentImageWidthText = createImageInfo( currentImageInfoContainer, "Image Width:" );
268             currentImageHeightText = createImageInfo( currentImageInfoContainer, "Image Height:" );
269
270             Composite currentImageSaveContainer = createImageInfoContainer( currentImageContainer );
271             Label dummyLabel = BaseWidgetUtils.createLabel( currentImageSaveContainer, "", 1 );
272             GridData gd = new GridData( GridData.GRAB_HORIZONTAL | GridData.HORIZONTAL_ALIGN_FILL );
273             dummyLabel.setLayoutData( gd );
274             currentImageSaveButton = createButton( currentImageSaveContainer, "Save..." );
275             currentImageSaveButton.addSelectionListener( new SelectionAdapter()
276             {
277                 public void widgetSelected( SelectionEvent event )
278                 {
279                     FileDialog fileDialog = new FileDialog( ImageDialog.this.getShell(), SWT.SAVE );
280                     fileDialog.setText( "Save Image" );
281                     fileDialog.setFilterExtensions( new String JavaDoc[]
282                         { "*.jpg" } );
283                     String JavaDoc returnedFileName = fileDialog.open();
284                     if ( returnedFileName != null )
285                     {
286                         try
287                         {
288                             File JavaDoc file = new File JavaDoc( returnedFileName );
289                             FileOutputStream JavaDoc out = new FileOutputStream JavaDoc( file );
290                             out.write( currentImageRawData );
291                             out.flush();
292                             out.close();
293                         }
294                         catch ( FileNotFoundException JavaDoc e )
295                         {
296
297                             BrowserCommonActivator.getDefault()
298                                 .getExceptionHandler().handleException(
299                                     new Status( IStatus.ERROR, ValueEditorsActivator.PLUGIN_ID, IStatus.ERROR,
300                                         "Can't write to file", e ) );
301                         }
302                         catch ( IOException JavaDoc e )
303                         {
304                             BrowserCommonActivator.getDefault()
305                                 .getExceptionHandler().handleException(
306                                     new Status( IStatus.ERROR, ValueEditorsActivator.PLUGIN_ID, IStatus.ERROR,
307                                         "Can't write to file", e ) );
308                         }
309                     }
310                 }
311             } );
312
313             this.currentTab = new TabItem( this.tabFolder, SWT.NONE );
314             this.currentTab.setText( "Current Image" );
315             this.currentTab.setControl( currentImageContainer );
316         }
317
318         // new image
319
newImageContainer = new Composite( this.tabFolder, SWT.NONE );
320         GridLayout newLayout = new GridLayout( 1, false );
321         newLayout.marginHeight = convertVerticalDLUsToPixels( IDialogConstants.VERTICAL_MARGIN );
322         newLayout.marginWidth = convertHorizontalDLUsToPixels( IDialogConstants.HORIZONTAL_MARGIN );
323         newLayout.verticalSpacing = convertVerticalDLUsToPixels( IDialogConstants.VERTICAL_SPACING );
324         newLayout.horizontalSpacing = convertHorizontalDLUsToPixels( IDialogConstants.HORIZONTAL_SPACING );
325         newImageContainer.setLayout( newLayout );
326         newImageContainer.setLayoutData( new GridData( GridData.FILL_HORIZONTAL ) );
327
328         newImageLabel = createImageLabel( newImageContainer );
329
330         Composite newImageInfoContainer = createImageInfoContainer( newImageContainer );
331         newImageTypeText = createImageInfo( newImageInfoContainer, "Image Type:" );
332         newImageSizeText = createImageInfo( newImageInfoContainer, "Image Size:" );
333         newImageWidthText = createImageInfo( newImageInfoContainer, "Image Width:" );
334         newImageHeightText = createImageInfo( newImageInfoContainer, "Image Height:" );
335
336         Composite newImageSelectContainer = createImageInfoContainer( newImageContainer );
337         newImageFilenameText = new Text( newImageSelectContainer, SWT.SINGLE | SWT.BORDER );
338         GridData gd = new GridData( GridData.GRAB_HORIZONTAL | GridData.HORIZONTAL_ALIGN_FILL );
339         newImageFilenameText.setLayoutData( gd );
340         newImageFilenameText.addModifyListener( new ModifyListener()
341         {
342             public void modifyText( ModifyEvent e )
343             {
344                 updateNewImageGroup();
345             }
346         } );
347         newImageBrowseButton = createButton( newImageSelectContainer, "Browse..." );
348         newImageBrowseButton.addSelectionListener( new SelectionAdapter()
349         {
350             public void widgetSelected( SelectionEvent event )
351             {
352                 FileDialog fileDialog = new FileDialog( ImageDialog.this.getShell(), SWT.OPEN );
353                 fileDialog.setText( "Select Image" );
354                 // fileDialog.setFilterExtensions(IMAGE_FILE_EXTENSIONS);
355
fileDialog.setFileName( new File JavaDoc( newImageFilenameText.getText() ).getName() );
356                 fileDialog.setFilterPath( new File JavaDoc( newImageFilenameText.getText() ).getParent() );
357                 String JavaDoc returnedFileName = fileDialog.open();
358                 if ( returnedFileName != null )
359                 {
360                     newImageFilenameText.setText( returnedFileName );
361                 }
362             }
363         } );
364
365         this.newTab = new TabItem( this.tabFolder, SWT.NONE );
366         this.newTab.setText( "New Image" );
367         this.newTab.setControl( newImageContainer );
368
369         applyDialogFont( composite );
370         return composite;
371     }
372
373
374     private void updateCurrentImageGroup()
375     {
376
377         if ( currentTab != null )
378         {
379
380             if ( currentImage != null && !currentImage.isDisposed() )
381             {
382                 currentImage.dispose();
383                 currentImage = null;
384             }
385
386             if ( currentImageRawData != null && currentImageRawData.length > 0 )
387             {
388                 try
389                 {
390                     ImageData imageData = new ImageData( new ByteArrayInputStream JavaDoc( currentImageRawData ) );
391                     currentImage = new Image( getShell().getDisplay(), resizeImage( imageData ) );
392                     currentImageLabel.setText( "" );
393                     currentImageLabel.setImage( currentImage );
394                     currentImageTypeText.setText( getImageType( imageData.type ) );
395                     currentImageSizeText.setText( getSizeString( currentImageRawData.length ) );
396                     currentImageWidthText.setText( imageData.width + " Pixel" );
397                     currentImageHeightText.setText( imageData.height + " Pixel" );
398                 }
399                 catch ( SWTException swte )
400                 {
401                     currentImageLabel.setImage( null );
402                     currentImageLabel.setText( " Unsupported format " );
403                     currentImageTypeText.setText( "Unsupported format" );
404                     currentImageSizeText.setText( getSizeString( currentImageRawData.length ) );
405                     currentImageWidthText.setText( "-" );
406                     currentImageHeightText.setText( "-" );
407                 }
408                 // currentImageGroup.setVisible(true);
409
}
410             else
411             {
412                 currentImageLabel.setImage( null );
413                 currentImageLabel.setText( " No Image " );
414                 currentImageTypeText.setText( "No Image" );
415                 currentImageSizeText.setText( "-" );
416                 currentImageWidthText.setText( "-" );
417                 currentImageHeightText.setText( "-" );
418             }
419
420             currentImageSaveButton.setEnabled( currentImageRawData != null && currentImageRawData.length > 0 );
421
422             // super.initializeBounds();
423
}
424     }
425
426
427     private void updateNewImageGroup()
428     {
429
430         if ( newImage != null && !newImage.isDisposed() )
431         {
432             newImage.dispose();
433             newImage = null;
434         }
435
436         if ( !"".equals( newImageFilenameText.getText() ) )
437         {
438             try
439             {
440                 File JavaDoc file = new File JavaDoc( newImageFilenameText.getText() );
441                 FileInputStream JavaDoc in = new FileInputStream JavaDoc( file );
442                 ByteArrayOutputStream JavaDoc out = new ByteArrayOutputStream JavaDoc( ( int ) file.length() );
443                 byte[] buf = new byte[4096];
444                 int len;
445                 while ( ( len = in.read( buf ) ) > 0 )
446                 {
447                     out.write( buf, 0, len );
448                 }
449                 this.newImageRawData = out.toByteArray();
450                 out.close();
451                 in.close();
452             }
453             catch ( FileNotFoundException JavaDoc e )
454             {
455                 newImageRawData = null;
456                 newImageLabel.setImage( null );
457                 newImageLabel.setText( " Error: File not found " );
458                 newImageTypeText.setText( "-" );
459                 newImageSizeText.setText( "-" );
460                 newImageWidthText.setText( "-" );
461                 newImageHeightText.setText( "-" );
462             }
463             catch ( IOException JavaDoc e )
464             {
465                 newImageRawData = null;
466                 newImageLabel.setImage( null );
467                 newImageLabel.setText( " Error: Can't read file (" + e.getMessage() + ") " );
468                 newImageTypeText.setText( "-" );
469                 newImageSizeText.setText( "-" );
470                 newImageWidthText.setText( "-" );
471                 newImageHeightText.setText( "-" );
472             }
473         }
474         else
475         {
476             newImageRawData = null;
477             newImageLabel.setImage( null );
478             newImageLabel.setText( " No image selected " );
479             newImageTypeText.setText( "-" );
480             newImageSizeText.setText( "-" );
481             newImageWidthText.setText( "-" );
482             newImageHeightText.setText( "-" );
483         }
484
485         if ( newImageRawData != null && newImageRawData.length > 0 )
486         {
487             try
488             {
489                 ImageData imageData = new ImageData( new ByteArrayInputStream JavaDoc( newImageRawData ) );
490                 newImage = new Image( getShell().getDisplay(), resizeImage( imageData ) );
491                 newImageLabel.setImage( newImage );
492                 newImageTypeText.setText( getImageType( imageData.type ) );
493                 if ( imageData.type != requiredImageType )
494                 {
495                     newImageTypeText.setText( newImageTypeText.getText() + " (will be converted to "
496                         + getImageType( this.requiredImageType ) + ")" );
497                 }
498                 newImageSizeText.setText( getSizeString( newImageRawData.length ) );
499                 newImageWidthText.setText( imageData.width + " Pixel" );
500                 newImageHeightText.setText( imageData.height + " Pixel" );
501             }
502             catch ( SWTException swte )
503             {
504                 newImageLabel.setImage( null );
505                 newImageLabel.setText( " Unsupported format " );
506                 newImageTypeText.setText( "Unsupported format" );
507                 newImageSizeText.setText( getSizeString( newImageRawData.length ) );
508                 newImageWidthText.setText( "-" );
509                 newImageHeightText.setText( "-" );
510             }
511         }
512
513         if ( okButton != null )
514         {
515             okButton.setEnabled( newImage != null );
516         }
517
518         newImageLabel.getParent().layout();
519         newImageTypeText.getParent().layout();
520         // newImageGroup.layout();
521
// super.initializeBounds();
522

523     }
524
525
526     private void updateTabFolder()
527     {
528         if ( currentImageSaveButton != null )
529         {
530             if ( tabFolder.getSelectionIndex() == CURRENT_TAB )
531             {
532                 currentImageSaveButton.setFocus();
533             }
534             updateCurrentImageGroup();
535         }
536
537         if ( newImageBrowseButton != null )
538         {
539             if ( tabFolder.getSelectionIndex() == NEW_TAB || currentImageSaveButton == null )
540             {
541                 newImageBrowseButton.setFocus();
542             }
543             updateNewImageGroup();
544         }
545     }
546
547
548     private ImageData resizeImage( ImageData imageData )
549     {
550         double widthScaleFactor = 1.0;
551         if ( imageData.width > MAX_WIDTH )
552         {
553             widthScaleFactor = ( double ) MAX_WIDTH / imageData.width;
554         }
555         double heightScaleFactor = 1.0;
556         if ( imageData.height > MAX_HEIGHT )
557         {
558             heightScaleFactor = ( double ) MAX_HEIGHT / imageData.height;
559         }
560
561         if ( heightScaleFactor < widthScaleFactor )
562         {
563             imageData = imageData.scaledTo(
564                 convertHorizontalDLUsToPixels( ( int ) ( imageData.width * heightScaleFactor ) ),
565                 convertHorizontalDLUsToPixels( ( int ) ( imageData.height * heightScaleFactor ) ) );
566         }
567         else
568         {
569             imageData = imageData.scaledTo(
570                 convertHorizontalDLUsToPixels( ( int ) ( imageData.width * widthScaleFactor ) ),
571                 convertHorizontalDLUsToPixels( ( int ) ( imageData.height * widthScaleFactor ) ) );
572         }
573
574         return imageData;
575     }
576
577
578     private Label createImageLabel( Composite parent )
579     {
580         Composite labelComposite = new Composite( parent, SWT.BORDER );
581         GridLayout gl = new GridLayout( 1, true );
582         labelComposite.setLayout( gl );
583         GridData gd = new GridData( GridData.GRAB_HORIZONTAL | GridData.HORIZONTAL_ALIGN_FILL );
584         gd.widthHint = MAX_WIDTH;
585         gd.heightHint = MAX_HEIGHT;
586         labelComposite.setLayoutData( gd );
587         labelComposite.setBackground( getShell().getDisplay().getSystemColor( SWT.COLOR_WIDGET_NORMAL_SHADOW ) );
588
589         Label imageLabel = new Label( labelComposite, SWT.CENTER );
590         gd = new GridData( SWT.CENTER, SWT.CENTER, true, true );
591         imageLabel.setLayoutData( gd );
592         return imageLabel;
593     }
594
595
596     private Composite createImageInfoContainer( Composite parent )
597     {
598         Composite imageInfoContainer = new Composite( parent, SWT.NONE );
599         GridLayout gl = new GridLayout( 2, false );
600         gl.marginHeight = gl.marginWidth = 0;
601         imageInfoContainer.setLayout( gl );
602         imageInfoContainer.setLayoutData( new GridData( GridData.FILL_HORIZONTAL ) );
603         return imageInfoContainer;
604     }
605
606
607     private Text createImageInfo( Composite parent, String JavaDoc label )
608     {
609         BaseWidgetUtils.createLabel( parent, label, 1 );
610         Text text = BaseWidgetUtils.createLabeledText( parent, "", 1 );
611         return text;
612     }
613
614
615     private Button createButton( Composite parent, String JavaDoc label )
616     {
617         Button button = BaseWidgetUtils.createButton( parent, label, 1 );
618         return button;
619     }
620
621
622     public static String JavaDoc getSizeString( int length )
623     {
624         if ( length > 1000000 )
625             return ( length / 1000000 ) + " MB (" + length + " bytes)";
626         else if ( length > 1000 )
627             return ( length / 1000 ) + " KB (" + length + " bytes)";
628         else
629             return length + " bytes";
630     }
631
632
633     public static String JavaDoc getImageInfo( byte[] imageRawData )
634     {
635
636         if ( imageRawData == null )
637         {
638             return "NULL";
639         }
640
641         String JavaDoc text = "Image (" + imageRawData.length + " Bytes)";
642         try
643         {
644             ByteArrayInputStream JavaDoc bais = new ByteArrayInputStream JavaDoc( imageRawData );
645             ImageData imageData = new ImageData( bais );
646
647             String JavaDoc typePrefix = getImageType( imageData.type );
648             if ( !"".equals( typePrefix ) )
649                 typePrefix += "-";
650
651             text = typePrefix + "Image (" + imageData.width + "x" + imageData.height + " Pixel, " + imageRawData.length
652                 + " Bytes)";
653         }
654         catch ( SWTException swte )
655         {
656             text = "Invalid Image (" + imageRawData.length + " Bytes)";
657         }
658         return text;
659     }
660
661
662     public static String JavaDoc getImageType( int swtCode )
663     {
664         String JavaDoc type = "";
665         if ( swtCode == SWT.IMAGE_JPEG )
666             type = "JPEG";
667         else if ( swtCode == SWT.IMAGE_GIF )
668             type = "GIF";
669         else if ( swtCode == SWT.IMAGE_PNG )
670             type = "PNG";
671         else if ( swtCode == SWT.IMAGE_BMP || swtCode == SWT.IMAGE_BMP_RLE )
672             type = "BMP";
673         return type;
674     }
675
676
677     /**
678      *
679      *
680      * @return Returns the image data in required format or null.
681      */

682     public byte[] getNewImageRawData()
683     {
684         return this.newImageRawDataInRequiredFormat;
685     }
686 }
687
Popular Tags