下面列出了org.eclipse.swt.widgets.Layout#org.eclipse.swt.custom.CTabItem 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。
@Override
public void go(DbTreeItem item, String imageName) {
CTabItem tab = relPanel.getTab(item.getTabName());
if (tab != null) {
relPanel.getTabFolder().setSelection(tab);
MessageDialog.openInformation(relPanel.getShell(), "Note", "You must close the '" + item.getTabName() + "' tab first.");
} else {
if (!MessageDialog.openConfirm(relPanel.getShell(), "Confirm DROP", "Are you sure you wish to drop script " + item.getName() + "?"))
return;
RevDatabase database = new RevDatabase(relPanel.getConnection());
if (!database.scriptDelete(item.getName()))
MessageDialog.openError(relPanel.getShell(), "Error", "Unable to drop script " + item.getName() + ". Check the system log for details.");
else
relPanel.redisplayed();
}
}
/**
* Ctrl-W on first and second in succession would close first and third
*/
@Test
public void testCloseFirstTabOfThree() {
final CTabFolder cTabFolder = mock( CTabFolder.class );
final TabSet tabSet = createTabSet( cTabFolder );
final CTabItem cTabItem1 = mock( CTabItem.class );
TabItem firstItem = createItem( tabSet, "first", "1st", cTabItem1 );
final CTabItem cTabItem2 = mock( CTabItem.class );
TabItem secondItem = createItem( tabSet, "second", "2nd", cTabItem2 );
TabItem thirdItem = createItem( tabSet, "third", "3rd", mock( CTabItem.class ) );
assertEquals( 0, tabSet.indexOf( firstItem ) );
assertEquals( 1, tabSet.indexOf( secondItem ) );
assertEquals( 2, tabSet.indexOf( thirdItem ) );
wireDisposalSelection( cTabFolder, tabSet, cTabItem1, cTabItem2 );
tabSet.setSelected( firstItem );
assertEquals( 0, tabSet.getSelectedIndex() );
firstItem.dispose();
assertEquals( "should select second", secondItem, tabSet.getSelected() );
}
public void createTabItems( List input )
{
super.createTabItems( input );
Composite pane = new Composite( tabFolder, SWT.NONE );
pane.setLayout( new FillLayout( ) );
new MessageAttributePage( pane, SWT.NONE, input );
CTabItem tabItem = new CTabItem( tabFolder, SWT.NONE );
if ( input.get( 0 ) instanceof ModelClassWrapper )
{
tabItem.setText( ( (ModelClassWrapper) input.get( 0 ) ).getTypeMessage( ) );
}
tabItem.setControl( pane );
}
public void setSwtItem(CTabItem swtItem) {
this.swtItem = swtItem;
if (swtItem == null) {
return;
}
swtItem.addDisposeListener(e -> closeView( userInitiatedClose ));
String title = getTitle();
if (title != null) {
swtItem.setText(Utils.escapeAccelerators(title));
}
updateLeftImage();
swtItem.setShowClose(isCloseable());
if (buildonSWTItemSet) {
build();
}
if (showonSWTItemSet) {
show();
}
}
private void buildContentsFor(final CTabItem tab, final Map<String, List<Pref>> entries) {
final ParameterExpandBar viewer = new ParameterExpandBar(tab.getParent(), SWT.V_SCROLL);
contents.add(viewer);
final GridData data = new GridData(SWT.FILL, SWT.FILL, true, true);
viewer.setLayoutData(data);
// ?
viewer.computeSize(tab.getBounds().x, SWT.DEFAULT);
//
viewer.setSpacing(5);
tab.setControl(viewer);
for (final String groupName : entries.keySet()) {
final ParameterExpandItem item = new ParameterExpandItem(viewer, entries.get(groupName), SWT.NONE, null);
item.setText(groupName);
item.setColor(new GamaColor(230, 230, 230, 255));
final Composite compo = new Composite(viewer, SWT.NONE);
compo.setBackground(viewer.getBackground());
buildGroupContents(compo, entries.get(groupName), NB_DIVISIONS);
item.setControl(compo);
item.setHeight(compo.computeSize(SWT.DEFAULT, SWT.DEFAULT).y);
item.setExpanded(true);
}
}
private void buildFieldsTab() {
CTabItem wFieldsTab = new CTabItem( wTabFolder, SWT.NONE, 3 );
wFieldsTab.setText( BaseMessages.getString( PKG, "MQTTConsumerDialog.FieldsTab" ) );
Composite wFieldsComp = new Composite( wTabFolder, SWT.NONE );
props.setLook( wFieldsComp );
FormLayout fieldsLayout = new FormLayout();
fieldsLayout.marginHeight = 15;
fieldsLayout.marginWidth = 15;
wFieldsComp.setLayout( fieldsLayout );
FormData fieldsFormData = new FormData();
fieldsFormData.left = new FormAttachment( 0, 0 );
fieldsFormData.top = new FormAttachment( wFieldsComp, 0 );
fieldsFormData.right = new FormAttachment( 100, 0 );
fieldsFormData.bottom = new FormAttachment( 100, 0 );
wFieldsComp.setLayoutData( fieldsFormData );
buildFieldTable( wFieldsComp, wFieldsComp );
wFieldsComp.layout();
wFieldsTab.setControl( wFieldsComp );
}
protected void buildItemContent( CTabItem item )
{
if ( itemMap.containsKey( item ) && itemMap.get( item ) == null )
{
String title = tabFolder.getSelection( ).getText( );
if ( CUSTOM_PAGE_TITLE.equals( title ) )
{
TabPage page = new RotatedTextCustomPage( ).getPage( );
if ( page != null )
{
setPageInput( page );
refresh( tabFolder, page, true );
item.setControl( page.getControl( ) );
itemMap.put( item, page );
}
}
}
else if ( itemMap.get( item ) != null )
{
setPageInput( itemMap.get( item ) );
refresh( tabFolder, itemMap.get( item ), false );
}
}
@Override
public void go(DbTreeItem item, String imageName) {
CTabItem tab = relPanel.getTab(item.getTabName());
if (tab != null) {
relPanel.getTabFolder().setSelection(tab);
MessageDialog.openInformation(relPanel.getShell(), "Note", "You must close the '" + item.getTabName() + "' tab first.");
} else {
if (!MessageDialog.openConfirm(relPanel.getShell(), "Confirm DROP", "Are you sure you wish to drop constraint " + item.getName() + "?"))
return;
ExecuteResult result = relPanel.getConnection().execute("DROP CONSTRAINT " + item.getName() + ";");
if (result.failed())
MessageDialog.openError(relPanel.getShell(), "Error", "Unable to drop constraint " + item.getName() + ": " + result.getErrorMessage());
else
relPanel.redisplayed();
}
}
public void relabel(){
UiDesk.asyncExec(new Runnable() {
public void run(){
Patient pat = (Patient) ElexisEventDispatcher.getSelected(Patient.class);
if (form != null && !form.isDisposed()) {
if (pat == null) {
form.setText(Messages.BriefAuswahlNoPatientSelected); //$NON-NLS-1$
} else {
form.setText(pat.getLabel());
CTabItem sel = ctab.getSelection();
if (sel != null) {
CommonViewer cv = (CommonViewer) sel.getData();
cv.notify(CommonViewer.Message.update);
}
}
}
}
});
}
/**
* {@inheritDoc}
*/
@Override
public void addPart(final IPresentablePart newPart, Object cookie)
{
ignoreSelection = true;
final CTabItem item = new CTabItem(tabFolder,SWT.NONE);
ignoreSelection = false;
item.setData(DATAKEY_PART,newPart);
updateItem(newPart);
newPart.addPropertyListener(new IPropertyListener()
{
public void propertyChanged(Object source, int propId)
{
updateItem(newPart);
}
});
}
@Test
public void testRegularCloseTab() {
final CTabFolder cTabFolder = mock( CTabFolder.class );
final TabSet tabSet = createTabSet( cTabFolder );
final CTabItem cTabItem1 = mock( CTabItem.class );
TabItem firstItem = createItem( tabSet, "first", "1st", cTabItem1 );
final CTabItem cTabItem2 = mock( CTabItem.class );
TabItem secondItem = createItem( tabSet, "second", "2nd", cTabItem2 );
TabItem thirdItem = createItem( tabSet, "third", "3rd", mock( CTabItem.class ) );
assertEquals( 0, tabSet.indexOf( firstItem ) );
assertEquals( 1, tabSet.indexOf( secondItem ) );
assertEquals( 2, tabSet.indexOf( thirdItem ) );
// after close the previous tab is selected if available
wireDisposalSelection( cTabFolder, tabSet, cTabItem2, cTabItem1 );
tabSet.setSelected( secondItem );
assertEquals( 1, tabSet.getSelectedIndex() );
secondItem.dispose();
assertEquals( "should select first", firstItem, tabSet.getSelected() );
}
private void refresh() {
// CTabItem item = getCTabItemByName(strActiveScript);
for ( int i = 0; i < folder.getItemCount(); i++ ) {
CTabItem item = folder.getItem( i );
if ( item.getText().equals( strActiveScript ) ) {
item.setImage( imageActiveScript );
} else if ( item.getText().equals( strActiveStartScript ) ) {
item.setImage( imageActiveStartScript );
} else if ( item.getText().equals( strActiveEndScript ) ) {
item.setImage( imageActiveEndScript );
} else {
item.setImage( imageInactiveScript );
}
}
// modifyScriptTree(null, SET_ACTIVE_ITEM);
}
@Override
protected void destroyEntry( boolean userInitiated ) {
if (Utils.runIfNotSWTThread(()->destroyEntry(userInitiated))) {
return;
}
if (swtItem == null) {
return;
}
// Must make a copy of swtItem because swtItem.dispose will end up in
// this method again, with swtItem.isDisposed() still false.
CTabItem item = swtItem;
swtItem = null;
super.destroyEntry( userInitiated );
try {
if (!item.isDisposed()) {
item.dispose();
}
}catch( SWTException e ){
// getting internal 'Widget it disposed' here, ignore
}
}
public void addAllTabs() {
CTabItem tabItemSelection = null;
if ( extraViewTabFolder != null && !extraViewTabFolder.isDisposed() ) {
tabItemSelection = extraViewTabFolder.getSelection();
}
jobHistoryDelegate.addJobHistory();
jobLogDelegate.addJobLog();
jobGridDelegate.addJobGrid();
jobMetricsDelegate.addJobMetrics();
if ( tabItemSelection != null ) {
extraViewTabFolder.setSelection( tabItemSelection );
} else {
extraViewTabFolder.setSelection( jobGridDelegate.getJobGridTab() );
}
XulToolbarbutton button = (XulToolbarbutton) toolbar.getElementById( "job-show-results" );
button.setTooltiptext( BaseMessages.getString( PKG, "Spoon.Tooltip.HideExecutionResults" ) );
ToolItem swtToolItem = (ToolItem) button.getManagedObject();
swtToolItem.setImage( GUIResource.getInstance().getImageHideResults() );
}
private void handTabSelectionEvent( Event event ) {
CTabItem tabItem = (CTabItem) event.item;
activeItem = findTabItemHandler( tabItem );
if ( activeItem != null ) {
activeItem.getTypeHandler().redraw();
activeItem.getTypeHandler().updateGui();
}
int tabIndex = tabFolder.indexOf( tabItem );
Integer lastIndex = tabSelectionHistory.isEmpty() ? null : tabSelectionHistory.peek();
if ( lastIndex == null || lastIndex != tabIndex ) {
tabSelectionHistory.push( tabIndex );
tabSelectionIndex = tabSelectionHistory.size() - 1;
}
}
public TabItemHandler findTabItemHandler( CTabItem tabItem ) {
int index = tabFolder.indexOf( tabItem );
if ( index < 0 || index >= items.size() ) {
return null;
}
return items.get( index );
}
private int getCTabPosition( String strTabName ) {
CTabItem[] cItems = folder.getItems();
for ( int i = 0; i < cItems.length; i++ ) {
if ( cItems[i].getText().equals( strTabName ) ) {
return i;
}
}
return -1;
}
/**
* Drukt die KG-Huelle anhand der Vorlage "KG"
*
* @param pat
* der Patient
* @param monitor
* @return
*/
public boolean doPrint(Patient pat, IProgressMonitor monitor){
monitor.subTask(pat.getLabel());
// TODO ?
// GlobalEvents.getInstance().fireSelectionEvent(rn,getViewSite());
existing = ctab.getItems().length;
String printer = null;
String tray = null;
CTabItem ctKG;
TextContainer text;
if (--existing < 0) {
ctKG = addItem(TT_KG_COVER_SHEET, Messages.KGPrintView_EMR, null); //$NON-NLS-1$
} else {
ctKG = ctab.getItem(0);
useItem(0, TT_KG_COVER_SHEET, null);
}
text = (TextContainer) ctKG.getData("text"); //$NON-NLS-1$
text.getPlugin().setFont("Serif", SWT.NORMAL, 9); //$NON-NLS-1$
text.replace("\\[Elexis\\]", new ReplaceCallback() { //$NON-NLS-1$
public String replace(String in){
return "ELEXIS"; //$NON-NLS-1$
}
});
printer = CoreHub.localCfg.get("Drucker/A4/Name", null); //$NON-NLS-1$
tray = CoreHub.localCfg.get("Drucker/A4/Schacht", null); //$NON-NLS-1$
if (text.getPlugin().print(printer, tray, false) == false) {
return false;
}
monitor.worked(1);
return true;
}
/**
* Hilight (or not) tab to indicate if action is required.
*
* @param hilightMe <code>true</code> to highlight, <code>false</code> if not.
* @param tabItem Tab to highlight
* @param tabCaption Tab text (normally fetched from resource).
*/
private void tagTab( boolean hilightMe, CTabItem tabItem, String tabCaption ) {
if ( hilightMe ) {
tabItem.setText( TAB_FLAG + tabCaption );
} else {
tabItem.setText( tabCaption );
}
}
private int getCTabPosition( String strTabName ) {
CTabItem[] cItems = folder.getItems();
for ( int i = 0; i < cItems.length; i++ ) {
if ( cItems[i].getText().equals( strTabName ) ) {
return i;
}
}
return -1;
}
private void modifyTabTree( CTabItem ctabitem, TabActions action ) {
switch ( action ) {
case DELETE_ITEM:
TreeItem dItem = getTreeItemByName( ctabitem.getText() );
if ( dItem != null ) {
dItem.dispose();
input.setChanged();
}
break;
case ADD_ITEM:
TreeItem item = new TreeItem( wTreeClassesItem, SWT.NULL );
item.setImage( imageActiveScript );
item.setText( ctabitem.getText() );
input.setChanged();
break;
case RENAME_ITEM:
input.setChanged();
break;
case SET_ACTIVE_ITEM:
input.setChanged();
break;
default:
break;
}
}
private void focusOnSelectedTab() {
CTabItem selectedItem = tabFolder.getSelection();
if (selectedItem != null) {
Control tabControl = selectedItem.getControl();
if (tabControl != null && !tabControl.isDisposed())
tabControl.setFocus();
}
}
/**
* Checks if a tab with given key exists.
*
* @param itemKey
* @return
*/
public boolean existTabItem( String itemKey )
{
CTabItem[] items = tabFolder.getItems( );
for ( int i = 0; i < items.length; i++ )
{
if ( items[i].getText( ).equals( itemKey ) )
return true;
}
return false;
}
@Override
public Object execute(ExecutionEvent event) throws ExecutionException{
medicationView =
(MedicationView) PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage()
.findView(MedicationView.PART_ID);
// open the LeistungenView
try {
medicationView.getViewSite().getPage().showView(LeistungenView.ID);
LeistungenView leistungenView = (LeistungenView) PlatformUI.getWorkbench()
.getActiveWorkbenchWindow()
.getActivePage().showView(LeistungenView.ID);
CodeSelectorHandler csHandler = CodeSelectorHandler.getInstance();
csHandler
.setCodeSelectorTarget(medicationView.getMedicationComposite().getDropTarget());
csHandler.getCodeSelectorTarget().registered(false);
medicationView.getMedicationComposite().setDropChangePrescription(null);
for (CTabItem cti : leistungenView.ctab.getItems()) {
if (cti.getText().equalsIgnoreCase("Artikelstamm")) {
leistungenView.setSelected(cti);
leistungenView.setFocus();
leistungenView.ctab.setSelection(cti);
}
}
} catch (Exception e) {
getLogger().error("Error showing LeistungenView", e);
}
return null;
}
private CTabItem getItem(IPresentablePart part)
{
CTabItem[] items = tabFolder.getItems();
for (int i = 0; i < items.length; i++)
{
if (items[i].getData(DATAKEY_PART) == part)
{
return items[i];
}
}
return null;
}
public void addAllTabs() {
CTabItem tabItemSelection = null;
if ( extraViewTabFolder != null && !extraViewTabFolder.isDisposed() ) {
tabItemSelection = extraViewTabFolder.getSelection();
}
transHistoryDelegate.addTransHistory();
transLogDelegate.addTransLog();
transGridDelegate.addTransGrid();
transPerfDelegate.addTransPerf();
transMetricsDelegate.addTransMetrics();
transPreviewDelegate.addTransPreview();
List<SpoonUiExtenderPluginInterface> relevantExtenders =
SpoonUiExtenderPluginType.getInstance().getRelevantExtenders( TransGraph.class, LOAD_TAB );
for ( SpoonUiExtenderPluginInterface relevantExtender : relevantExtenders ) {
relevantExtender.uiEvent( this, LOAD_TAB );
}
if ( tabItemSelection != null ) {
extraViewTabFolder.setSelection( tabItemSelection );
} else {
extraViewTabFolder.setSelection( transGridDelegate.getTransGridTab() );
}
XulToolbarbutton button = (XulToolbarbutton) toolbar.getElementById( "trans-show-results" );
button.setTooltiptext( BaseMessages.getString( PKG, "Spoon.Tooltip.HideExecutionResults" ) );
ToolItem toolItem = (ToolItem) button.getManagedObject();
toolItem.setImage( GUIResource.getInstance().getImageHideResults() );
}
public void refreshSelectedViewer(){
CTabItem sel = ctab.getSelection();
if ((sel != null)) {
CommonViewer cv = (CommonViewer) sel.getData();
cv.notify(CommonViewer.Message.update);
}
}
@Override
public void go(DbTreeItem item, String imageName) {
CTabItem tab = relPanel.getTab(item);
if (tab != null) {
if (tab instanceof ExpressionResultViewerTab) {
relPanel.setTab(tab);
return;
} else
tab.dispose();
}
ExpressionResultViewerTab viewer = new ExpressionResultViewerTab(relPanel, item, null);
relPanel.setTab(viewer, imageName);
}
private void modifyScriptTree( CTabItem ctabitem, int iModType ) {
switch ( iModType ) {
case DELETE_ITEM:
TreeItem dItem = getTreeItemByName( ctabitem.getText() );
if ( dItem != null ) {
dItem.dispose();
input.setChanged();
}
break;
case ADD_ITEM:
TreeItem item = new TreeItem( wTreeScriptsItem, SWT.NULL );
item.setImage( imageActiveScript );
item.setText( ctabitem.getText() );
input.setChanged();
break;
case RENAME_ITEM:
input.setChanged();
break;
case SET_ACTIVE_ITEM:
input.setChanged();
break;
default:
break;
}
}
private void modifyScriptTree( CTabItem ctabitem, int iModType ) {
switch ( iModType ) {
case DELETE_ITEM:
TreeItem dItem = getTreeItemByName( ctabitem.getText() );
if ( dItem != null ) {
dItem.dispose();
input.setChanged();
}
break;
case ADD_ITEM:
TreeItem item = new TreeItem( wTreeScriptsItem, SWT.NULL );
item.setImage( imageActiveScript );
item.setText( ctabitem.getText() );
input.setChanged();
break;
case RENAME_ITEM:
input.setChanged();
break;
case SET_ACTIVE_ITEM:
input.setChanged();
break;
default:
break;
}
}