/*******************************************************************************
* Copyright (c) 2009, 2012 EclipseSource and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* EclipseSource - initial API and implementation
******************************************************************************/
package org.eclipse.rap.internal.design.example.fancy.builder;
import org.eclipse.rap.internal.design.example.ILayoutSetConstants;
import org.eclipse.rap.internal.design.example.builder.DummyBuilder;
import org.eclipse.rap.ui.interactiondesign.layout.ElementBuilder;
import org.eclipse.rap.ui.interactiondesign.layout.model.LayoutSet;
import org.eclipse.swt.SWT;
import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.graphics.Point;
import org.eclipse.swt.layout.FormAttachment;
import org.eclipse.swt.layout.FormData;
import org.eclipse.swt.layout.FormLayout;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Label;
public class HeaderBuilder extends ElementBuilder {
private Image leftBg;
private Image logo;
private Image rightBg;
private Image wave;
private FormData fdLogo;
private Control toolBar;
private Composite leftArea;
private Composite waveArea;
private Composite buttonBg;
public HeaderBuilder( Composite parent, String layoutSetId ) {
super( parent, layoutSetId );
initLayoutData();
}
private void initLayoutData() {
LayoutSet set = getLayoutSet();
// images
leftBg = createImage( set.getImagePath( ILayoutSetConstants.HEADER_LEFT_BG ) );
rightBg = createImage( set.getImagePath( ILayoutSetConstants.HEADER_RIGHT_BG ) );
wave = createImage( set.getImagePath( ILayoutSetConstants.HEADER_WAVE ) );
// logo
ElementBuilder builder
= new DummyBuilder( null, ILayoutSetConstants.SET_ID_LOGO );
logo = builder.getImage( ILayoutSetConstants.LOGO );
// positions
LayoutSet layoutSet = ( LayoutSet ) builder.getAdapter( LayoutSet.class );
fdLogo = layoutSet.getPosition( ILayoutSetConstants.LOGO_POSITION );
}
public void addControl( Control control, Object layoutData ) {
toolBar = control;
toolBar.setLayoutData( layoutData );
}
public void addControl( Control control, String positionId ) {
}
public void addImage( Image image, Object layoutData ) {
}
public void addImage( Image image, String positionId ) {
}
public void build() {
getParent().setLayout( new FormLayout() );
getParent().setBackgroundMode( SWT.INHERIT_FORCE );
getParent().setBackgroundImage( leftBg );
leftArea = new Composite( getParent(), SWT.NONE );
leftArea.setLayout( new FormLayout() );
// leftArea.setBackgroundImage( leftBg );
FormData fdLeftArea = new FormData();
leftArea.setLayoutData( fdLeftArea );
fdLeftArea.left = new FormAttachment( 0 );
fdLeftArea.top = new FormAttachment( 0, 0 );
fdLeftArea.height = leftBg.getBounds().height;
waveArea = new Composite( getParent(), SWT.NONE );
waveArea.setLayout( new FormLayout() );
waveArea.setBackgroundImage( wave );
final FormData fdWaveArea = new FormData();
waveArea.setLayoutData( fdWaveArea );
fdWaveArea.left = new FormAttachment( leftArea );
fdWaveArea.top = new FormAttachment( 0, 0 );
final Composite logoArea = new Composite( getParent(), SWT.NONE );
logoArea.setLayout( new FormLayout() );
logoArea.setBackgroundImage( rightBg );
FormData fdLogoArea = new FormData();
logoArea.setLayoutData( fdLogoArea );
fdLogoArea.right = new FormAttachment( 100, 0 );
fdLogoArea.top = new FormAttachment( 0, 0 );
fdLogoArea.height = rightBg.getBounds().height;
fdLogoArea.width = rightBg.getBounds().width;
Label logoLabel = new Label( logoArea, SWT.NONE );
logoLabel.setImage( logo );
logoLabel.setLayoutData( fdLogo );
fdLogo.height = logo.getBounds().height;
fdLogo.width = logo.getBounds().width;
fdLeftArea.right = new FormAttachment( logoArea, -80 );
buttonBg = new Composite( leftArea, SWT.NONE );
FormData fdButtonBg = new FormData();
buttonBg.setLayoutData( fdButtonBg );
fdButtonBg.height = 30;
fdButtonBg.width = 30;
buttonBg.moveAbove( leftArea );
buttonBg.moveAbove( logoArea );
}
public void dispose() {
}
public Control getControl() {
return leftArea;
}
public Point getSize() {
return leftArea.getSize();
}
public Object getAdapter( Class adapter ) {
Object result = null;
if( adapter == Composite.class ) {
result = waveArea;
}
return result;
}
}