<extension
point="org.eclipse.ui.presentationFactories">
<factory
class="presentation.PresentationFactory"
id="resentation.PresentationFactory"
name="PresentationFactory"/>
</extension>
<extension
id="product"
point="org.eclipse.core.runtime.products">
<product
application="application"
name="Name">
<property
name="preferenceCustomization"
value="plugin_customization.ini"/>
</product>
</extension>

看这段配置.
声明了一个自定义的Presentation. 但是要让这个Presentation生效, 必须是要用Product的声明(因为我是做RCP, 所以Plug-In方式不是太关心, 理论上做Plug-In你也不太应该更改这些个内容).
plugin_customization.ini和plugin.xml在同一个目录下. 内容如下
org.eclipse.ui/presentationFactoryId=presentation.PresentationFactory
org.eclipse.ui/SHOW_TRADITIONAL_STYLE_TABS=false
第一行是说现在使用的是这个表现了, id和xml中的id一致.
第二行比较简单, 就是说现在tab都是圆边的了.
package presentation;

import org.eclipse.jface.action.GroupMarker;
import org.eclipse.jface.action.MenuManager;
import org.eclipse.jface.action.Separator;
import org.eclipse.jface.preference.IPreferenceStore;
import org.eclipse.swt.SWT;
import org.eclipse.swt.graphics.Point;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Menu;
import org.eclipse.ui.IWorkbenchPreferenceConstants;
import org.eclipse.ui.PlatformUI;
import org.eclipse.ui.internal.IPreferenceConstants;
import org.eclipse.ui.internal.WorkbenchMessages;
import org.eclipse.ui.internal.WorkbenchPlugin;
import org.eclipse.ui.internal.preferences.IDynamicPropertyMap;
import org.eclipse.ui.internal.presentations.SystemMenuClose;
import org.eclipse.ui.internal.presentations.SystemMenuCloseAll;
import org.eclipse.ui.internal.presentations.SystemMenuCloseOthers;
import org.eclipse.ui.internal.presentations.SystemMenuMaximize;
import org.eclipse.ui.internal.presentations.SystemMenuMinimize;
import org.eclipse.ui.internal.presentations.SystemMenuMove;
import org.eclipse.ui.internal.presentations.SystemMenuRestore;
import org.eclipse.ui.internal.presentations.UpdatingActionContributionItem;
import org.eclipse.ui.internal.presentations.defaultpresentation.DefaultMultiTabListener;
import org.eclipse.ui.internal.presentations.defaultpresentation.DefaultSimpleTabListener;
import org.eclipse.ui.internal.presentations.defaultpresentation.DefaultTabFolder;
import org.eclipse.ui.internal.presentations.defaultpresentation.DefaultThemeListener;
import org.eclipse.ui.internal.presentations.util.ISystemMenu;
import org.eclipse.ui.internal.presentations.util.PresentablePartFolder;
import org.eclipse.ui.internal.presentations.util.TabbedStackPresentation;
import org.eclipse.ui.presentations.IPresentablePart;
import org.eclipse.ui.presentations.IStackPresentationSite;
import org.eclipse.ui.presentations.StackPresentation;
import org.eclipse.ui.presentations.WorkbenchPresentationFactory;


/** *//**
* Create at 2007-4-24,下午03:59:11<br>
* 表现工厂
*
* @author Brad.Wu
* @version 1.0
*/

public class PresentationFactory extends WorkbenchPresentationFactory ...{
private static int editorTabPosition = WorkbenchPlugin.getDefault().getPreferenceStore().getInt(
IPreferenceConstants.EDITOR_TAB_POSITION);


/** *//**
* (non-Javadoc)
*
* @see org.eclipse.ui.presentations.AbstractPresentationFactory#createEditorPresentation(org.eclipse.swt.widgets.Composite,
* org.eclipse.ui.presentations.IStackPresentationSite)
*/

public StackPresentation createEditorPresentation(Composite parent, IStackPresentationSite site) ...{
DefaultTabFolder folder = new DefaultTabFolder(parent, editorTabPosition | SWT.BORDER, site
.supportsState(IStackPresentationSite.STATE_MINIMIZED), site.supportsState(IStackPresentationSite.STATE_MAXIMIZED));


/**//*
* Set the minimum characters to display, if the preference is something other than the default. This is mainly
* intended for RCP applications or for expert users (i.e., via the plug-in customization file).
*
* Bug 32789.
*/
final IPreferenceStore store = PlatformUI.getPreferenceStore();

if (store.contains(IWorkbenchPreferenceConstants.EDITOR_MINIMUM_CHARACTERS)) ...{
final int minimumCharacters = store.getInt(IWorkbenchPreferenceConstants.EDITOR_MINIMUM_CHARACTERS);

if (minimumCharacters >= 0) ...{
folder.setMinimumCharacters(minimumCharacters);
}
}

PresentablePartFolder partFolder = new PresentablePartFolder(folder);

TabbedStackPresentation result = new TabbedStackPresentation(site, partFolder, new EditorSystemMenu(site));

DefaultThemeListener themeListener = new DefaultThemeListener(folder, result.getTheme());
result.getTheme().addListener(themeListener);

IDynamicPropertyMap workbenchPreferences = result.getPluginPreferences(WorkbenchPlugin.getDefault());

new DefaultMultiTabListener(workbenchPreferences, IPreferenceConstants.SHOW_MULTIPLE_EDITOR_TABS, folder);

new DefaultSimpleTabListener(result.getApiPreferences(), IWorkbenchPreferenceConstants.SHOW_TRADITIONAL_STYLE_TABS, folder);

return result;
}


class EditorSystemMenu implements ISystemMenu ...{
private MenuManager menuManager = new MenuManager();

private SystemMenuRestore restore;

private SystemMenuMove move;

private SystemMenuMinimize minimize;

private SystemMenuMaximize maximize;

private SystemMenuClose close;

private SystemMenuCloseOthers closeOthers;

private SystemMenuCloseAll closeAll;


/** *//**
* Create the standard view menu
*
* @param site
* the site to associate the view with
*/

public EditorSystemMenu(IStackPresentationSite site) ...{
restore = new SystemMenuRestore(site);
move = new SystemMenuMove(site, WorkbenchMessages.EditorPane_moveEditor, false);
minimize = new SystemMenuMinimize(site);
maximize = new SystemMenuMaximize(site);
close = new SystemMenuClose(site);
closeOthers = new SystemMenuCloseOthers(site);
closeAll = new SystemMenuCloseAll(site);


...{ // Initialize system menu
menuManager.add(new GroupMarker("misc")); //$NON-NLS-1$
menuManager.add(new GroupMarker("restore")); //$NON-NLS-1$
menuManager.add(new UpdatingActionContributionItem(restore));

menuManager.add(move);
menuManager.add(new GroupMarker("size")); //$NON-NLS-1$
menuManager.add(new GroupMarker("state")); //$NON-NLS-1$
menuManager.add(new UpdatingActionContributionItem(minimize));

menuManager.add(new UpdatingActionContributionItem(maximize));
menuManager.add(new Separator("close")); //$NON-NLS-1$
menuManager.add(close);
menuManager.add(closeOthers);
menuManager.add(closeAll);

site.addSystemActions(menuManager);
} // End of system menu initialization

}


/**//*
* (non-Javadoc)
*
* @see org.eclipse.ui.internal.presentations.util.ISystemMenu#show(org.eclipse.swt.graphics.Point,
* org.eclipse.ui.presentations.IPresentablePart)
*/

public void show(Control parent, Point displayCoordinates, IPresentablePart currentSelection) ...{
restore.update();
move.setTarget(currentSelection);
move.update();
minimize.update();
maximize.update();
close.setTarget(currentSelection);
closeOthers.setTarget(currentSelection);
closeAll.update();

Menu aMenu = menuManager.createContextMenu(parent);
menuManager.update(true);
aMenu.setLocation(displayCoordinates.x, displayCoordinates.y);
aMenu.setVisible(true);
}


/** *//**
* Dispose resources associated with this menu
*/

public void dispose() ...{
menuManager.dispose();
menuManager.removeAll();
}
}
}

上面是表现的代码,
WorkbenchPresentationFactory ...其实就是默认的表现. 这个表现更改的东西就是去掉了EditorPart的Tab上右键弹出菜单最后的那个"New Editor"菜单.