protected void createContents() {
		shell = new Shell(getParent(), SWT.DIALOG_TRIM | SWT.APPLICATION_MODAL);
		shell.setText(ABOUT_TITLE);
		Color backgroundColor = shell.getDisplay().getSystemColor(SWT.COLOR_WHITE);
		shell.setBackground(backgroundColor);
		shell.addDisposeListener(new DisposeListener(){
			@Override
			public void widgetDisposed(DisposeEvent e) {
				if (logoImage != null && !logoImage.isDisposed()) {
					logoImage.dispose();
				}
			}
		});

		GridLayout gl = new GridLayout(2, false);
		gl.horizontalSpacing = 20;
		gl.verticalSpacing = 10;
		gl.marginHeight = 10;
		gl.marginWidth = 10;
		shell.setLayout(gl);

		Canvas logoClient = new Canvas(shell, SWT.NONE);
		logoClient.setBackground(backgroundColor);
		GridData logoClientGridData = new GridData(GridData.GRAB_VERTICAL);

		logoClient.setLayoutData(logoClientGridData);

		logoImage = new Image(shell.getDisplay(), VermilionCascadeNotebook.class.getResourceAsStream("/images/logo.png"));

		final Composite textClient = new Composite(shell, SWT.NONE);
		textClient.setBackground(backgroundColor);
		GridData gd = new GridData(GridData.BEGINNING);
		textClient.setLayoutData(gd);

		gl = new GridLayout(1, false);
		gl.horizontalSpacing = 0;
		gl.verticalSpacing = 0;
		gl.marginHeight = 0;
		gl.marginWidth = 0;
		textClient.setLayout(gl);

		styledText(backgroundColor, textClient, VermilionCascadeNotebook.TITLE_WITH_VERSION);
		styledText(backgroundColor, textClient, "Copyright ©2013-2014 by Alexander Drobyshevsky");
		String email = "drobyshevsky@gmail.com";
		StyledText mailText = styledText(backgroundColor, textClient, "E-mail: " + email);
		styledText(backgroundColor, textClient, "Program is free of any restrictions");
		styledText(backgroundColor, textClient, "Created with great respect to Java technologies");
		
		StyleRange styleRange = new StyleRange();
		styleRange.start = 8;
		styleRange.length = email.length();
		styleRange.fontStyle = SWT.BOLD;
		styleRange.foreground = shell.getDisplay().getSystemColor(SWT.COLOR_BLUE);
		mailText.setStyleRange(styleRange);
		
		logoClient.addPaintListener(new PaintListener() {
			public void paintControl(PaintEvent e) {
				int height = textClient.computeSize(SWT.DEFAULT, SWT.DEFAULT).y;
				System.out.println("h:" + height);
				e.gc.drawImage(logoImage, 0, 0, 332, 248, 0, 0, height, height);
			}
		});
		
		int height = textClient.computeSize(SWT.DEFAULT, SWT.DEFAULT).y;
		logoClientGridData.widthHint = height;
		logoClientGridData.heightHint = height;

		Button OK = new Button(shell, SWT.PUSH);
		OK.setText("     OK     ");
		OK.setBackground(backgroundColor);
		
		GridData okGridData = new GridData(GridData.HORIZONTAL_ALIGN_CENTER);
		okGridData.horizontalSpan = 2;
		OK.setLayoutData(okGridData);
		OK.setFocus();
		OK.addSelectionListener (new SelectionAdapter () {
			public void widgetSelected (SelectionEvent e) {
				shell.close();
			}
		});

		shell.setDefaultButton(OK);
		
		shell.pack();
		
		UI.centerShell(getParent(), shell);
	}