给Figure添加滚动条

Draw2d中有ScrollPane这样一个IFigure,它可以设置从不、一直、自动三种方式来现实滚动条,默认是自动。
实现步骤:
1、添加容器
panel = new Panel();
2、给容器添加布局(参照Draw2D布局,以便使用适合自己的布局)
3、在EditPart中将panel设置为ContentPanel

下面给出我的实现:
listboxFigure:
/*******************************************************************************
 * Copyright (c) 2005-2011, Chinese Eclipse Community(CEC) 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.ceclipse.org
 *
 * Contributors:
 *   Ming.He <[email protected]> - initial API and implementation 
 *******************************************************************************/
package org.cec.design.graphic.figures;

import org.eclipse.draw2d.ColorConstants;
import org.eclipse.draw2d.CompoundBorder;
import org.eclipse.draw2d.IFigure;
import org.eclipse.draw2d.LineBorder;
import org.eclipse.draw2d.MarginBorder;
import org.eclipse.draw2d.Panel;
import org.eclipse.draw2d.ScrollPane;
import org.eclipse.draw2d.ToolbarLayout;

/**
 * TODO 此处填写 class 信息
 * 
 * @author Ming.He
 * @date 2011-4-5
 */
public class ListboxFigure extends ScrollPane {

	private Panel panel;
	
	public ListboxFigure() {
		setOpaque(true);
		setBackgroundColor(ColorConstants.white);
		ToolbarLayout layout = new ToolbarLayout();
		layout.setMinorAlignment(ToolbarLayout.ALIGN_TOPLEFT);
		layout.setStretchMinorAxis(false);
		layout.setSpacing(2);
		panel = new Panel();
		panel.setBorder(new CompoundBorder(new LineBorder(), new MarginBorder(3)));
		panel.setLayoutManager(layout);
		setContents(panel);
	}

	public IFigure getContentFigure(){
		return panel;
	}

}


重写EditPart中实现getContentPane方法:
/* (non-Javadoc)
	 * @see org.eclipse.gef.editparts.AbstractGraphicalEditPart#getContentPane()
	 */
	//Override
	public IFigure getContentPane() {
		return ((ListboxFigure)getFigure()).getContentFigure();
	}

你可能感兴趣的:(eclipse,C++,c,C#)