package com.sonatype.buildserver.eclipse.ui.job.view;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.DisposeEvent;
import org.eclipse.swt.events.DisposeListener;
import org.eclipse.swt.layout.grouplayout.GroupLayout;
import org.eclipse.swt.layout.grouplayout.LayoutStyle;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Label;
import org.eclipse.ui.forms.events.HyperlinkEvent;
import org.eclipse.ui.forms.events.IHyperlinkListener;
import org.eclipse.ui.forms.widgets.FormToolkit;
import org.eclipse.ui.forms.widgets.Hyperlink;
import com.sonatype.buildserver.eclipse.ui.HudsonUtils;
import com.sonatype.buildserver.eclipse.ui.Messages;
import com.sonatype.buildserver.monitor.HudsonJob;
import org.hudsonci.rest.model.build.ChangeEntryDTO;
extends Composite
{
private final FormToolkit toolkit = new FormToolkit( Display.getCurrent() );
private Label lblAuthor;
private Hyperlink hyperlink;
private Label lblMessage;
private ChangeEntryDTO entry;
private HudsonJob job;
public ChangeEntryPanel( Composite parent, ChangeEntryDTO entry, HudsonJob job )
{
super( parent, SWT.NONE );
initComponents();
load(entry, job);
}
private void load( ChangeEntryDTO entry, HudsonJob job )
{
this.entry = entry;
this.job = job;
lblMessage.setText( HudsonUtils.stripHtml( entry.getMessage() ) );
hyperlink.setText( entry.getAuthor().getFullName() );
}
addDisposeListener( new DisposeListener()
{
{
toolkit.dispose();
}
} );
toolkit.adapt( this );
toolkit.paintBordersFor( this );
lblAuthor = new Label(this, SWT.NONE);
toolkit.adapt(lblAuthor, true, true);
lblAuthor.setText(Messages.ChangeEntryPanel_author);
hyperlink = toolkit.createHyperlink(this, "New Hyperlink", SWT.NONE);
hyperlink.addHyperlinkListener(new IHyperlinkListener() {
if (entry != null) {
String url = job.getServerName();
if (!url.endsWith( "/" )) {
url = url + "/";
}
url = url + "user/";
url = url + entry.getAuthor().getId();
System.out.println("url=" + url);
HudsonUtils.openUrl( url );
}
}
}
}
});
toolkit.paintBordersFor(hyperlink);
lblMessage = new Label(this, SWT.WRAP);
toolkit.adapt(lblMessage, true, true);
lblMessage.setText("New Label");
GroupLayout groupLayout = new GroupLayout(this);
groupLayout.setHorizontalGroup(
groupLayout.createParallelGroup(GroupLayout.LEADING)
.add(groupLayout.createSequentialGroup()
.add(groupLayout.createParallelGroup(GroupLayout.LEADING)
.add(groupLayout.createSequentialGroup()
.addContainerGap()
.add(lblAuthor)
.addPreferredGap(LayoutStyle.RELATED)
.add(hyperlink, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE))
.add(groupLayout.createSequentialGroup()
.add(18)
.add(lblMessage, GroupLayout.DEFAULT_SIZE, 420, Short.MAX_VALUE)))
.addContainerGap())
);
groupLayout.setVerticalGroup(
groupLayout.createParallelGroup(GroupLayout.LEADING)
.add(groupLayout.createSequentialGroup()
.addContainerGap()
.add(groupLayout.createParallelGroup(GroupLayout.BASELINE)
.add(lblAuthor)
.add(hyperlink, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE))
.addPreferredGap(LayoutStyle.RELATED)
.add(lblMessage, GroupLayout.DEFAULT_SIZE, 212, Short.MAX_VALUE)
.addContainerGap())
);
setLayout(groupLayout);
}
}