Clean Code that Works.

프로젝트를 진행하던중.. (혼자하는 -_-;;)

동적으로 레이블을 생성해서 레이블을 클릭했을시 해당 레이블의 툴팁텍스트를 얻어 오려고 했더니
안되서 몇일간 좀 삽질을 했었다.

 for (i = 0; i < result.length; i++) {
   samples[i] = new CLabel(c, SWT.NONE);
   samples[i].setImage(resize(new Image(Display.getCurrent(), filePath + result[i]), 100, 100));
   samples[i].setToolTipText(result[i]);
   samples[i].addMouseListener(new MouseAdapter(){
    public void mouseDoubleClick(MouseEvent e) {
        System.out.println(samples[i].getToolTipText());
    }   
   } );


이렇게 할려고 했더니.. 당연히 i 값을 런타임에는 그 레이블 마지막 갯수 + 1로 고정이 되어 버리기 때문에 얻어 올 수가 없었다.
연구실 형이 알려줬는데.


   samples[i].addMouseListener(new MouseAdapter(){
    public void mouseDoubleClick(MouseEvent e) {
         System.out.println(((CLabel)e.getSource()).getToolTipText());    
    }   
   } );

위와 같이 마우스 이벤트로부터 getSource() 메소드로 얻어온걸 레이블로 캐스팅 해서 툴팁 텍스트를 얻어 올 수 있었다.

e.getSource();
라는거 처음 알았는데
자바독에서
return 값이 이벤트가 최초로 발생한 객체
라고 설명해 주네요.

지금 만드는 것도 대충 마무리가 되 가는데 어서 마무리하고 플러그인 프로젝트로 변신 시켜 봐야겠습니다.