package com.gwesm.ui;
import org.eclipse.swt.SWT;
import org.eclipse.swt.custom.ScrolledComposite;
import org.eclipse.swt.events.ControlAdapter;
import org.eclipse.swt.events.ControlEvent;
import org.eclipse.swt.graphics.Rectangle;
import org.eclipse.swt.layout.FillLayout;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.ExpandBar;
import org.eclipse.swt.widgets.ExpandItem;
import com.gwesm.presenters.CharacterPresenter;
import com.gwesm.presenters.ProfessionPresenter;
public class CharacterProfessionsView extends SWTView {
ExpandBar professionsExpandBar;
CharacterPresenter presenter;
public CharacterProfessionsView(Composite parent,
CharacterPresenter presenter) {
super(parent, presenter);
this.presenter = presenter;
FillLayout layout = new FillLayout();
// layout.marginHeight = 10;
// layout.marginWidth = 10;
this.setLayout(layout);
final ScrolledComposite scrolledComposite = new ScrolledComposite(this,
SWT.BORDER | SWT.H_SCROLL | SWT.V_SCROLL);
scrolledComposite.setExpandHorizontal(true);
scrolledComposite.setExpandVertical(true);
scrolledComposite.addControlListener(new ControlAdapter() {
@Override
public void controlResized(ControlEvent e) {
Rectangle r = scrolledComposite.getClientArea();
scrolledComposite.setMinSize(CharacterProfessionsView.this
.computeSize(r.width, SWT.DEFAULT));
}
});
this.professionsExpandBar = new ExpandBar(scrolledComposite, SWT.NONE);
this.professionsExpandBar.setSpacing(5);
scrolledComposite.setContent(this.professionsExpandBar);
refresh();
}
@Override
public void refresh() {
int itemOrder = 0;
for (ProfessionPresenter professionPresenter : this.presenter
.getProfessionPresenters()) {
ExpandItem professionItem = new ExpandItem(
this.professionsExpandBar, SWT.NONE, itemOrder);
professionItem.setText(professionPresenter.getProfessionName());
ProfessionView professionView = new ProfessionView(
this.professionsExpandBar, professionPresenter);
professionItem.setHeight(professionView.computeSize(SWT.DEFAULT,
SWT.DEFAULT).y);
professionItem.setControl(professionView);
itemOrder = itemOrder + 1;
}
}
}