/*! ****************************************************************************** * * Pentaho Data Integration * * Copyright (C) 2002-2013 by Pentaho : http://www.pentaho.com * ******************************************************************************* * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * ******************************************************************************/ package org.pentaho.di.ui.spoon.dialog; import org.eclipse.swt.SWT; import org.eclipse.swt.custom.CCombo; import org.eclipse.swt.custom.CTabFolder; import org.eclipse.swt.custom.CTabItem; import org.eclipse.swt.events.SelectionAdapter; import org.eclipse.swt.events.SelectionEvent; import org.eclipse.swt.events.ShellAdapter; import org.eclipse.swt.events.ShellEvent; import org.eclipse.swt.graphics.Color; import org.eclipse.swt.graphics.Font; import org.eclipse.swt.graphics.RGB; import org.eclipse.swt.layout.FormAttachment; import org.eclipse.swt.layout.FormData; import org.eclipse.swt.layout.FormLayout; import org.eclipse.swt.widgets.Button; import org.eclipse.swt.widgets.ColorDialog; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Control; import org.eclipse.swt.widgets.Dialog; import org.eclipse.swt.widgets.Display; import org.eclipse.swt.widgets.Event; import org.eclipse.swt.widgets.Label; import org.eclipse.swt.widgets.Listener; import org.eclipse.swt.widgets.Shell; import org.eclipse.swt.widgets.Spinner; import org.pentaho.di.core.Const; import org.pentaho.di.core.NotePadMeta; import org.pentaho.di.core.variables.VariableSpace; import org.pentaho.di.i18n.BaseMessages; import org.pentaho.di.ui.core.PropsUI; import org.pentaho.di.ui.core.gui.GUIResource; import org.pentaho.di.ui.core.gui.WindowProperty; import org.pentaho.di.ui.core.widget.StyledTextComp; import org.pentaho.di.ui.trans.step.BaseStepDialog; /** * Dialog to enter a text. (descriptions etc.) * * @author Samatar * @since 20-04-2009 */ public class NotePadDialog extends Dialog { private static Class<?> PKG = NotePadDialog.class; // for i18n purposes, needed by Translator2!! private NotePadMeta notePadMeta; private Label wlDesc; private StyledTextComp wDesc; private FormData fdlDesc, fdDesc; private Button wOK, wCancel; private Listener lsOK, lsCancel; private Shell shell; private String title; private PropsUI props; private CTabFolder wNoteFolder; private FormData fdNoteFolder; private CTabItem wNoteContentTab, wNoteFontTab; private FormData fdNoteContentComp, fdNoteFontComp; private Label wlFontName; private CCombo wFontName; private FormData fdlFontName, fdFontName; private Label wlFontSize; private Spinner wFontSize; private FormData fdlFontSize, fdFontSize; private Label wlFontBold; private Button wFontBold; private FormData fdlFontBold, fdFontBold; private Label wlDrawShadow; private Button wDrawShadow; private FormData fdlDrawShadow, fdDrawShadow; private Label wlFontItalic; private Button wFontItalic; private FormData fdlFontItalic, fdFontItalic; private Button wbBackGroundColorChange; private FormData fdBackGroundColorChange; private Label wBackGroundColor; private FormData fdBackGroundColor; private Button wbFontColorChange; private FormData fdFontColorChange; private Label wFontColor; private FormData fdFontColor; private Button wbBorderColorChange; private FormData fdBorderColorChange; private Label wBorderColor; private FormData fdBorderColor; private Label wlFontColor; private FormData fdlFontColor; private Label wlBackGroundColor; private FormData fdlBackGroundColor; private Label wlBorderColor; private FormData fdlBorderColor; private static GUIResource guiresource = GUIResource.getInstance(); public static RGB COLOR_RGB_BLACK = guiresource.getColorBlack().getRGB(); public static RGB COLOR_RGB_YELLOW = guiresource.getColorYellow().getRGB(); public static RGB COLOR_RGB_GRAY = guiresource.getColorGray().getRGB(); private Color fontColor; private Color bgColor; private Color borderColor; private Font font; private VariableSpace variables; /** * Dialog to allow someone to show or enter a text in variable width font * * @param parent * The parent shell to use * @param title * The dialog title * @param message * The message to display * @param text * The text to display or edit */ public NotePadDialog( VariableSpace space, Shell parent, String title, NotePadMeta nMeta ) { super( parent, SWT.NONE ); props = PropsUI.getInstance(); this.title = title; if ( nMeta != null ) { notePadMeta = nMeta; } this.variables = space; } public NotePadDialog( VariableSpace space, Shell parent, String title ) { this( space, parent, title, null ); } public NotePadMeta open() { Shell parent = getParent(); Display display = parent.getDisplay(); shell = new Shell( parent, SWT.DIALOG_TRIM | SWT.RESIZE | SWT.MAX | SWT.MIN | SWT.NONE ); props.setLook( shell ); shell.setImage( guiresource.getImageNoteSmall() ); FormLayout formLayout = new FormLayout(); formLayout.marginWidth = Const.FORM_MARGIN; formLayout.marginHeight = Const.FORM_MARGIN; shell.setLayout( formLayout ); shell.setText( title ); int margin = Const.MARGIN; int middle = 30; wNoteFolder = new CTabFolder( shell, SWT.BORDER ); props.setLook( wNoteFolder, PropsUI.WIDGET_STYLE_TAB ); // //////////////////////// // START OF NOTE CONTENT TAB/// // / wNoteContentTab = new CTabItem( wNoteFolder, SWT.NONE ); wNoteContentTab.setText( BaseMessages.getString( PKG, "NotePadDialog.ContentTab.Note" ) ); Composite wNoteContentComp = new Composite( wNoteFolder, SWT.NONE ); props.setLook( wNoteContentComp ); FormLayout fileLayout = new FormLayout(); fileLayout.marginWidth = 3; fileLayout.marginHeight = 3; wNoteContentComp.setLayout( fileLayout ); // From step line wlDesc = new Label( wNoteContentComp, SWT.NONE ); wlDesc.setText( BaseMessages.getString( PKG, "NotePadDialog.ContentTab.Note.Label" ) ); props.setLook( wlDesc ); fdlDesc = new FormData(); fdlDesc.left = new FormAttachment( 0, 0 ); fdlDesc.top = new FormAttachment( 0, margin ); wlDesc.setLayoutData( fdlDesc ); wDesc = new StyledTextComp( variables, wNoteContentComp, SWT.MULTI | SWT.LEFT | SWT.BORDER | SWT.H_SCROLL | SWT.V_SCROLL, "" ); wDesc.setText( "" ); // props.setLook(wDesc, PropsUI.WIDGET_STYLE_FIXED); // props.setLook(wDesc); fdDesc = new FormData(); fdDesc.left = new FormAttachment( 0, 0 ); fdDesc.top = new FormAttachment( wlDesc, margin ); fdDesc.right = new FormAttachment( 100, -10 ); fdDesc.bottom = new FormAttachment( 100, -margin ); wDesc.setLayoutData( fdDesc ); fdNoteContentComp = new FormData(); fdNoteContentComp.left = new FormAttachment( 0, 0 ); fdNoteContentComp.top = new FormAttachment( 0, 0 ); fdNoteContentComp.right = new FormAttachment( 100, 0 ); fdNoteContentComp.bottom = new FormAttachment( 100, 0 ); wNoteContentComp.setLayoutData( fdNoteContentComp ); wNoteContentComp.layout(); wNoteContentTab.setControl( wNoteContentComp ); // /////////////////////////////////////////////////////////// // / END OF NOTE CONTENT TAB // /////////////////////////////////////////////////////////// // //////////////////////// // START OF NOTE FONT TAB/// // / wNoteFontTab = new CTabItem( wNoteFolder, SWT.NONE ); wNoteFontTab.setText( BaseMessages.getString( PKG, "NotePadDialog.Font.Label" ) ); Composite wNoteFontComp = new Composite( wNoteFolder, SWT.NONE ); props.setLook( wNoteFontComp ); FormLayout notefontLayout = new FormLayout(); fileLayout.marginWidth = 3; fileLayout.marginHeight = 3; wNoteFontComp.setLayout( notefontLayout ); // Font name wlFontName = new Label( wNoteFontComp, SWT.RIGHT ); wlFontName.setText( BaseMessages.getString( PKG, "NotePadDialog.Font.Name.Label" ) ); props.setLook( wlFontName ); fdlFontName = new FormData(); fdlFontName.left = new FormAttachment( margin, margin ); fdlFontName.top = new FormAttachment( 0, 3 * margin ); fdlFontName.right = new FormAttachment( middle, -margin ); wlFontName.setLayoutData( fdlFontName ); wFontName = new CCombo( wNoteFontComp, SWT.BORDER | SWT.READ_ONLY ); wFontName.setItems( Const.GetAvailableFontNames() ); props.setLook( wFontName ); fdFontName = new FormData(); fdFontName.left = new FormAttachment( middle, 0 ); fdFontName.top = new FormAttachment( 0, 3 * margin ); fdFontName.right = new FormAttachment( 100, -margin ); wFontName.setLayoutData( fdFontName ); wFontName.select( 0 ); wFontName.addSelectionListener( new SelectionAdapter() { public void widgetSelected( SelectionEvent arg0 ) { refreshTextNote(); } } ); // FontSize line wlFontSize = new Label( wNoteFontComp, SWT.RIGHT ); wlFontSize.setText( BaseMessages.getString( PKG, "NotePadDialog.Font.Size.Label" ) ); props.setLook( wlFontSize ); fdlFontSize = new FormData(); fdlFontSize.left = new FormAttachment( margin, margin ); fdlFontSize.top = new FormAttachment( wFontName, margin ); fdlFontSize.right = new FormAttachment( middle, -margin ); wlFontSize.setLayoutData( fdlFontSize ); wFontSize = new Spinner( wNoteFontComp, SWT.BORDER ); wFontSize.setMinimum( 0 ); wFontSize.setMaximum( 70 ); wFontSize.setIncrement( 1 ); fdFontSize = new FormData(); fdFontSize.left = new FormAttachment( middle, 0 ); fdFontSize.top = new FormAttachment( wFontName, margin ); fdFontSize.right = new FormAttachment( 100, -margin ); wFontSize.setLayoutData( fdFontSize ); wFontSize.addSelectionListener( new SelectionAdapter() { public void widgetSelected( SelectionEvent arg0 ) { refreshTextNote(); } } ); // Font bold? wlFontBold = new Label( wNoteFontComp, SWT.RIGHT ); wlFontBold.setText( BaseMessages.getString( PKG, "NotePadDialog.Font.Bold.Label" ) ); props.setLook( wlFontBold ); fdlFontBold = new FormData(); fdlFontBold.left = new FormAttachment( margin, margin ); fdlFontBold.top = new FormAttachment( wFontSize, margin ); fdlFontBold.right = new FormAttachment( middle, -margin ); wlFontBold.setLayoutData( fdlFontBold ); wFontBold = new Button( wNoteFontComp, SWT.CHECK ); props.setLook( wFontBold ); fdFontBold = new FormData(); fdFontBold.left = new FormAttachment( middle, 0 ); fdFontBold.top = new FormAttachment( wFontSize, margin ); fdFontBold.right = new FormAttachment( 100, -margin ); wFontBold.setLayoutData( fdFontBold ); wFontBold.addSelectionListener( new SelectionAdapter() { public void widgetSelected( SelectionEvent arg0 ) { refreshTextNote(); } } ); // Font Italic? wlFontItalic = new Label( wNoteFontComp, SWT.RIGHT ); wlFontItalic.setText( BaseMessages.getString( PKG, "NotePadDialog.Font.Italic.Label" ) ); props.setLook( wlFontItalic ); fdlFontItalic = new FormData(); fdlFontItalic.left = new FormAttachment( margin, margin ); fdlFontItalic.top = new FormAttachment( wFontBold, margin ); fdlFontItalic.right = new FormAttachment( middle, -margin ); wlFontItalic.setLayoutData( fdlFontItalic ); wFontItalic = new Button( wNoteFontComp, SWT.CHECK ); props.setLook( wFontItalic ); fdFontItalic = new FormData(); fdFontItalic.left = new FormAttachment( middle, 0 ); fdFontItalic.top = new FormAttachment( wFontBold, margin ); fdFontItalic.right = new FormAttachment( 100, -margin ); wFontItalic.setLayoutData( fdFontItalic ); wFontItalic.addSelectionListener( new SelectionAdapter() { public void widgetSelected( SelectionEvent arg0 ) { refreshTextNote(); } } ); // Font color line wlFontColor = new Label( wNoteFontComp, SWT.RIGHT ); wlFontColor.setText( BaseMessages.getString( PKG, "NotePadDialog.Font.Color.Label" ) ); props.setLook( wlFontColor ); fdlFontColor = new FormData(); fdlFontColor.left = new FormAttachment( margin, margin ); fdlFontColor.top = new FormAttachment( wFontItalic, 2 * margin ); fdlFontColor.right = new FormAttachment( middle, -margin ); wlFontColor.setLayoutData( fdlFontColor ); // Change font color wbFontColorChange = new Button( wNoteFontComp, SWT.PUSH ); wbFontColorChange.setImage( guiresource.getImageColor() ); wbFontColorChange.setToolTipText( BaseMessages.getString( PKG, "NotePadDialog.Font.Color.Change.Tooltip" ) ); props.setLook( wbFontColorChange ); fdFontColorChange = new FormData(); fdFontColorChange.top = new FormAttachment( wFontItalic, 2 * margin ); fdFontColorChange.right = new FormAttachment( 100, -margin ); wbFontColorChange.setLayoutData( fdFontColorChange ); wbFontColorChange.addSelectionListener( new SelectionAdapter() { public void widgetSelected( SelectionEvent e ) { ColorDialog cd = new ColorDialog( shell ); cd.setText( BaseMessages.getString( PKG, "NotePadDialog.Font.Color.Dialog.Label" ) ); cd.setRGB( wFontColor.getBackground().getRGB() ); RGB newColor = cd.open(); if ( newColor == null ) { return; } fontColor.dispose(); fontColor = new Color( shell.getDisplay(), newColor ); wFontColor.setBackground( fontColor ); refreshTextNote(); } } ); // Font color wFontColor = new Label( wNoteFontComp, SWT.NONE ); wFontColor.setToolTipText( BaseMessages.getString( PKG, "NotePadDialog.Font.Color.Tooltip" ) ); props.setLook( wFontColor ); wFontColor.setEnabled( false ); fdFontColor = new FormData(); fdFontColor.left = new FormAttachment( wlFontColor, margin ); fdFontColor.top = new FormAttachment( wFontItalic, 2 * margin ); fdFontColor.right = new FormAttachment( wbFontColorChange, -margin ); wFontColor.setLayoutData( fdFontColor ); // Background color line wlBackGroundColor = new Label( wNoteFontComp, SWT.RIGHT ); wlBackGroundColor.setText( BaseMessages.getString( PKG, "NotePadDialog.Font.BackGroundColor.Label" ) ); props.setLook( wlBackGroundColor ); fdlBackGroundColor = new FormData(); fdlBackGroundColor.left = new FormAttachment( margin, margin ); fdlBackGroundColor.top = new FormAttachment( wFontColor, 2 * margin ); fdlBackGroundColor.right = new FormAttachment( middle, -margin ); wlBackGroundColor.setLayoutData( fdlBackGroundColor ); // Change Background color wbBackGroundColorChange = new Button( wNoteFontComp, SWT.PUSH ); wbBackGroundColorChange.setImage( guiresource.getImageColor() ); wbBackGroundColorChange.setToolTipText( BaseMessages.getString( PKG, "NotePadDialog.Font.BackGroundColor.Change.Tooltip" ) ); props.setLook( wbBackGroundColorChange ); fdBackGroundColorChange = new FormData(); fdBackGroundColorChange.top = new FormAttachment( wFontColor, 2 * margin ); fdBackGroundColorChange.right = new FormAttachment( 100, -margin ); fdBackGroundColorChange.right = new FormAttachment( 100, -margin ); wbBackGroundColorChange.setLayoutData( fdBackGroundColorChange ); wbBackGroundColorChange.addSelectionListener( new SelectionAdapter() { public void widgetSelected( SelectionEvent e ) { ColorDialog cd = new ColorDialog( shell ); cd.setText( BaseMessages.getString( PKG, "NotePadDialog.Font.Color.Dialog.Label" ) ); cd.setRGB( wBackGroundColor.getBackground().getRGB() ); RGB newColor = cd.open(); if ( newColor == null ) { return; } bgColor.dispose(); bgColor = new Color( shell.getDisplay(), newColor ); wBackGroundColor.setBackground( bgColor ); refreshTextNote(); } } ); // Background color wBackGroundColor = new Label( wNoteFontComp, SWT.BORDER ); wBackGroundColor.setToolTipText( BaseMessages.getString( PKG, "NotePadDialog.Font.BackGroundColor.Tooltip" ) ); props.setLook( wBackGroundColor ); wBackGroundColor.setEnabled( false ); fdBackGroundColor = new FormData(); fdBackGroundColor.left = new FormAttachment( wlBackGroundColor, margin ); fdBackGroundColor.top = new FormAttachment( wFontColor, 2 * margin ); fdBackGroundColor.right = new FormAttachment( wbBackGroundColorChange, -margin ); wBackGroundColor.setLayoutData( fdBackGroundColor ); // Border color line wlBorderColor = new Label( wNoteFontComp, SWT.RIGHT ); wlBorderColor.setText( BaseMessages.getString( PKG, "NotePadDialog.Font.BorderColor.Label" ) ); props.setLook( wlBorderColor ); fdlBorderColor = new FormData(); fdlBorderColor.left = new FormAttachment( margin, margin ); fdlBorderColor.top = new FormAttachment( wBackGroundColor, 2 * margin ); fdlBorderColor.right = new FormAttachment( middle, -margin ); wlBorderColor.setLayoutData( fdlBorderColor ); // Change border color wbBorderColorChange = new Button( wNoteFontComp, SWT.PUSH ); wbBorderColorChange.setImage( guiresource.getImageColor() ); wbBorderColorChange.setToolTipText( BaseMessages.getString( PKG, "NotePadDialog.Font.BorderColor.Change.Tooltip" ) ); props.setLook( wbBorderColorChange ); fdBorderColorChange = new FormData(); fdBorderColorChange.top = new FormAttachment( wBackGroundColor, 2 * margin ); fdBorderColorChange.right = new FormAttachment( 100, -margin ); wbBorderColorChange.setLayoutData( fdBorderColorChange ); wbBorderColorChange.addSelectionListener( new SelectionAdapter() { public void widgetSelected( SelectionEvent e ) { ColorDialog cd = new ColorDialog( shell ); cd.setText( BaseMessages.getString( PKG, "NotePadDialog.Font.Color.Dialog.Label" ) ); cd.setRGB( wBorderColor.getBackground().getRGB() ); RGB newColor = cd.open(); if ( newColor == null ) { return; } borderColor.dispose(); borderColor = new Color( shell.getDisplay(), newColor ); wBorderColor.setBackground( borderColor ); } } ); // border color wBorderColor = new Label( wNoteFontComp, SWT.BORDER ); wBorderColor.setToolTipText( BaseMessages.getString( PKG, "NotePadDialog.Font.BorderColor.Tooltip" ) ); props.setLook( wBorderColor ); wBorderColor.setEnabled( false ); fdBorderColor = new FormData(); fdBorderColor.left = new FormAttachment( wlBorderColor, margin ); fdBorderColor.top = new FormAttachment( wBackGroundColor, 2 * margin ); fdBorderColor.right = new FormAttachment( wbBorderColorChange, -margin ); wBorderColor.setLayoutData( fdBorderColor ); // Draw note? wlDrawShadow = new Label( wNoteFontComp, SWT.RIGHT ); wlDrawShadow.setText( BaseMessages.getString( PKG, "NotePadDialog.DrawShadow.Label" ) ); props.setLook( wlDrawShadow ); fdlDrawShadow = new FormData(); fdlDrawShadow.left = new FormAttachment( margin, margin ); fdlDrawShadow.top = new FormAttachment( wBorderColor, margin ); fdlDrawShadow.right = new FormAttachment( middle, -margin ); wlDrawShadow.setLayoutData( fdlDrawShadow ); wDrawShadow = new Button( wNoteFontComp, SWT.CHECK ); wDrawShadow.setToolTipText( BaseMessages.getString( PKG, "NotePadDialog.DrawShadow.Tooltip" ) ); props.setLook( wDrawShadow ); fdDrawShadow = new FormData(); fdDrawShadow.left = new FormAttachment( middle, 0 ); fdDrawShadow.top = new FormAttachment( wBorderColor, margin ); fdDrawShadow.right = new FormAttachment( 100, -margin ); wDrawShadow.setLayoutData( fdDrawShadow ); fdNoteFontComp = new FormData(); fdNoteFontComp.left = new FormAttachment( 0, 0 ); fdNoteFontComp.top = new FormAttachment( 0, 0 ); fdNoteFontComp.right = new FormAttachment( 100, 0 ); fdNoteFontComp.bottom = new FormAttachment( 100, 0 ); wNoteFontComp.setLayoutData( fdNoteFontComp ); wNoteFontComp.layout(); wNoteFontTab.setControl( wNoteFontComp ); // /////////////////////////////////////////////////////////// // / END OF NOTE FONT TAB // /////////////////////////////////////////////////////////// fdNoteFolder = new FormData(); fdNoteFolder.left = new FormAttachment( 0, 0 ); fdNoteFolder.top = new FormAttachment( 0, margin ); fdNoteFolder.right = new FormAttachment( 100, 0 ); fdNoteFolder.bottom = new FormAttachment( 100, -50 ); wNoteFolder.setLayoutData( fdNoteFolder ); // Some buttons wOK = new Button( shell, SWT.PUSH ); wOK.setText( BaseMessages.getString( PKG, "System.Button.OK" ) ); wCancel = new Button( shell, SWT.PUSH ); wCancel.setText( BaseMessages.getString( PKG, "System.Button.Cancel" ) ); BaseStepDialog.positionBottomButtons( shell, new Button[] { wOK, wCancel }, margin, wNoteFolder ); // Add listeners lsCancel = new Listener() { public void handleEvent( Event e ) { cancel(); } }; lsOK = new Listener() { public void handleEvent( Event e ) { ok(); } }; wOK.addListener( SWT.Selection, lsOK ); wCancel.addListener( SWT.Selection, lsCancel ); // Detect [X] or ALT-F4 or something that kills this window... shell.addShellListener( new ShellAdapter() { public void shellClosed( ShellEvent e ) { cancel(); } } ); getData(); BaseStepDialog.setSize( shell ); shell.open(); while ( !shell.isDisposed() ) { if ( !display.readAndDispatch() ) { display.sleep(); } } return notePadMeta; } public void dispose() { props.setScreen( new WindowProperty( shell ) ); fontColor.dispose(); bgColor.dispose(); borderColor.dispose(); if ( font != null && !font.isDisposed() ) { font.dispose(); } shell.dispose(); } public void getData() { if ( notePadMeta != null ) { wDesc.setText( Const.NVL( notePadMeta.getNote(), "" ) ); wFontName.setText( notePadMeta.getFontName() == null ? props.getNoteFont().getName() : notePadMeta .getFontName() ); wFontSize.setSelection( notePadMeta.getFontSize() == -1 ? props.getNoteFont().getHeight() : notePadMeta .getFontSize() ); wFontBold.setSelection( notePadMeta.isFontBold() ); wFontItalic.setSelection( notePadMeta.isFontItalic() ); fontColor = new Color( shell.getDisplay(), new RGB( notePadMeta.getFontColorRed(), notePadMeta.getFontColorGreen(), notePadMeta.getFontColorBlue() ) ); bgColor = new Color( shell.getDisplay(), new RGB( notePadMeta.getBackGroundColorRed(), notePadMeta .getBackGroundColorGreen(), notePadMeta.getBackGroundColorBlue() ) ); borderColor = new Color( shell.getDisplay(), new RGB( notePadMeta.getBorderColorRed(), notePadMeta .getBorderColorGreen(), notePadMeta.getBorderColorBlue() ) ); wDrawShadow.setSelection( notePadMeta.isDrawShadow() ); } else { wFontName.setText( props.getNoteFont().getName() ); wFontSize.setSelection( props.getNoteFont().getHeight() ); wFontBold.setSelection( false ); wFontItalic.setSelection( false ); fontColor = new Color( shell.getDisplay(), new RGB( NotePadMeta.COLOR_RGB_BLACK_RED, NotePadMeta.COLOR_RGB_BLACK_GREEN, NotePadMeta.COLOR_RGB_BLACK_BLUE ) ); bgColor = new Color( shell.getDisplay(), new RGB( NotePadMeta.COLOR_RGB_DEFAULT_BG_RED, NotePadMeta.COLOR_RGB_DEFAULT_BG_GREEN, NotePadMeta.COLOR_RGB_DEFAULT_BG_BLUE ) ); borderColor = new Color( shell.getDisplay(), new RGB( NotePadMeta.COLOR_RGB_DEFAULT_BORDER_RED, NotePadMeta.COLOR_RGB_DEFAULT_BORDER_GREEN, NotePadMeta.COLOR_RGB_DEFAULT_BORDER_BLUE ) ); wDrawShadow.setSelection( true ); } wFontColor.setBackground( fontColor ); wBackGroundColor.setBackground( bgColor ); wBorderColor.setBackground( borderColor ); wNoteFolder.setSelection( 0 ); wDesc.setFocus(); wDesc.setSelection( wDesc.getText().length() ); refreshTextNote(); } private void cancel() { notePadMeta = null; dispose(); } private void ok() { notePadMeta = new NotePadMeta(); if ( wDesc.getText() != null ) { notePadMeta.setNote( wDesc.getText() ); } if ( wFontName.getText() != null ) { notePadMeta.setFontName( wFontName.getText() ); } notePadMeta.setFontSize( wFontSize.getSelection() ); notePadMeta.setFontBold( wFontBold.getSelection() ); notePadMeta.setFontItalic( wFontItalic.getSelection() ); // font color notePadMeta.setFontColorRed( wFontColor.getBackground().getRed() ); notePadMeta.setFontColorGreen( wFontColor.getBackground().getGreen() ); notePadMeta.setFontColorBlue( wFontColor.getBackground().getBlue() ); // background color notePadMeta.setBackGroundColorRed( wBackGroundColor.getBackground().getRed() ); notePadMeta.setBackGroundColorGreen( wBackGroundColor.getBackground().getGreen() ); notePadMeta.setBackGroundColorBlue( wBackGroundColor.getBackground().getBlue() ); // border color notePadMeta.setBorderColorRed( wBorderColor.getBackground().getRed() ); notePadMeta.setBorderColorGreen( wBorderColor.getBackground().getGreen() ); notePadMeta.setBorderColorBlue( wBorderColor.getBackground().getBlue() ); notePadMeta.setDrawShadow( wDrawShadow.getSelection() ); dispose(); } private void refreshTextNote() { int swt = SWT.NORMAL; if ( wFontBold.getSelection() ) { swt = SWT.BOLD; } if ( wFontItalic.getSelection() ) { swt = swt | SWT.ITALIC; } // dispose of old font only after setting it on wDesc Font oldFont = font; font = new Font( shell.getDisplay(), wFontName.getText(), wFontSize.getSelection(), swt ); wDesc.setFont( font ); if ( oldFont != null && !oldFont.isDisposed() ) { oldFont.dispose(); } for ( Control control : wDesc.getChildren() ) { control.setBackground( bgColor ); } wFontColor.setBackground( fontColor ); wBackGroundColor.setBackground( bgColor ); wBorderColor.setBackground( borderColor ); } }