Tuesday, July 20, 2010

Eclipse Memory Analyzer

Good article about finding memory leaks with heap dumps using Eclipse Memory Analyzer

Eclipse Memory Analyzer



Thursday, September 17, 2009

Creating overlay icons

There are cases where table viewer icon decoration is not possible. ( exception single column table , you can do). By creating overlay icons and returning them in
ITableLabelProvider
public Image getColumnImage(Object element, int columnIndex) would suffice.

Ex:

ImageDescriptor desc = WorkbenchPlugin.getImageDescriptor(FilterIconDecorator.DECORATOR_ICON_PATH);
if(desc != null)
{
DecorationOverlayIcon decoratedImage = new DecorationOverlayIcon(
image, desc, IDecoration.BOTTOM_LEFT);
if (decoratedImage != null)
return decoratedImage.createImage();
}

Monday, June 29, 2009

How to restore workbench settings

Here is sample code to enable saving and restoring setting related to Workbench.

Override WorkbenchAdvisor.initialize(IWorkbenchConfigurer configurer) to define/register workbench related settings before any window being shown up.


public void initialize(IWorkbenchConfigurer configurer) {

configurer.setSaveAndRestore(true);

}

Friday, May 15, 2009

How to use Form layout

Form layout is basically very flexible layout and used to place controls in a composite when there is no idea about how to layout them ahead. i.e layout controls depend on a single control(X). when the position of control(X) is changed, the dependent controls positions will be changed consequently.

For example:

Composite buttonPanel = new Composite(this, SWT.NONE);
buttonPanel.setLayout(new FormLayout());
final FormData buttonPanelFormData = new FormData();
int m_offset = 10; // border offset.
buttonPanelFormData.top = new FormAttachment(0, m_offset);
buttonPanelFormData.left = new FormAttachment(0, m_offset);
buttonPanelFormData.right = new FormAttachment(100, -m_offset);
buttonPanel.setLayoutData(buttonPanelFormData);

Button m_addButton = new Button(buttonPanel, SWT.PUSH);
m_addButton.setText(BUTTON_ADD_LABEL);
FormData addButtonFormData = new FormData();
addButtonFormData.top = new FormAttachment(0, 0);
addButtonFormData.left = new FormAttachment(0, 0);
addButtonFormData.width = 20; //button width;
m_addButton.setLayoutData(addButtonFormData);

Button m_editButton = new Button(buttonPanel, SWT.PUSH);
m_editButton.setText(BUTTON_EDIT_LABEL);
FormData editButtonFormData = new FormData();
editButtonFormData.top = new FormAttachment(0, 0);
// edit button is placed next to add button with horizontal gap of m_offset
editButtonFormData.left = new FormAttachment(m_addButton, m_offset);
editButtonFormData.width = 20;//button width
m_editButton.setLayoutData(editButtonFormData);

Similarly controls can be placed anywhere with the reference of control(X).

Thursday, May 14, 2009

How to embed Swing control inside SWT Composite?

You need an SWT_AWT bridge to create WEmbeddedFrame which will be used to add Swing Controls.

Here is sample code that adds JLabel to AWT frame.

JLabel label = new JLabel("sample label");


Composite composite = new Composite(shell, SWT.EMBEDDED);

Frame frame = SWT_AWT.new_Frame(composite);

frame.setLayout(new BorderLayout());

frame.add(label,BorderLayout.CENTER);