2017-11-09 19 views
0

TreeViewer.ColumnViewerToolTipSupport에 대한 툴팁을 구현해야 사용자 정의 툴팁 합성 제공에 도움이됩니다. 그러나 문제는 상위 쉘의 설정 크기는 쉘 크기에 영향을 미치지 않습니다. 여기에 코드에서 봐 :ColumnViewerToolTipSupport를 사용하는 동안 쉘 크기를 수정할 수없는 이유는 무엇입니까?

여기
private static class MyToolTip extends ColumnViewerToolTipSupport { 

    public static final void enableFor(ColumnViewer viewer, int style) { 
     new MyToolTip(viewer, style, false);    
    } 

    private MyToolTip(ColumnViewer viewer, int style, boolean manualActivation) { 
     super(viewer, style, manualActivation); 
     setHideOnMouseDown(false); 
    } 

    @Override 
    protected Composite createViewerToolTipContentArea(Event event, ViewerCell cell, Composite parent) { 
     String text = getText(event); 
     if (text == null || text.isEmpty()) { 
      return super.createViewerToolTipContentArea(event, cell, parent); 
     } 

     parent.setSize(450,300); 
     final Composite comp = new Composite(parent, SWT.NONE); 
     GridLayout gridLayout = new GridLayout(1, false); 
     gridLayout.horizontalSpacing = 0; 
     gridLayout.verticalSpacing = 0; 
     gridLayout.marginHeight = 0; 
     gridLayout.marginWidth = 0; 
     comp.setLayout(gridLayout); 
     comp.setLayoutData(new GridData(GridData.FILL_BOTH)); 

     StyledText styledText = new StyledText(comp, SWT.BORDER); 
     styledText.setText(text); 

     StyleRange style = new StyleRange(); 
     style.start = 0; 
     style.length = text.indexOf(":"); 
     style.fontStyle = SWT.BOLD; 

     styledText.setStyleRange(style);   
     return comp; 
    } 
} 

parent.setSize (450300)는 영향을주지 않습니다. 쉘 클래스 (ToolTip.java)에서 셸 크기를 검색하면 다른 값이 반환되므로 거대한 셸이 표시됩니다.

어떻게 수정합니까 ??

답변

2

createViewerToolTipContentArea을 호출하는 코드는이 메서드를 호출 한 후 셸 pack() 메서드를 호출합니다. pack()은 사용중인 레이아웃을 기반으로 셸의 크기를 계산하고 setSize을 호출합니다. 따라서 귀하의 setSize 통화보다 우선합니다.

GridLayout을 사용하고 있으므로 GridDatawidthHintheightHint 필드를 사용해 합성 크기를 제안 해 볼 수 있습니다.

이 코드는 개인 toolTipShow 방법의 org.eclipse.jface.window.ToolTip입니다. 이것은 쉽게 무시할 수 없습니다.

+0

Perfect !! 이것은 매력으로 작동합니다. 고맙습니다 :) –