view src/de/mpg/mpiwg/itgroup/digilib/digiImage/properties/DigiImagePropertySection.java @ 25:6e7bb3467531

new property view
author dwinter
date Mon, 10 Jan 2011 11:38:03 +0100
parents
children 183c3e96f6c3
line wrap: on
line source

package de.mpg.mpiwg.itgroup.digilib.digiImage.properties;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.eclipse.jface.viewers.ISelection;
import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.swt.SWT;
import org.eclipse.swt.custom.CLabel;
import org.eclipse.swt.events.ModifyEvent;
import org.eclipse.swt.events.ModifyListener;
import org.eclipse.swt.layout.FormAttachment;
import org.eclipse.swt.layout.FormData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Table;
import org.eclipse.swt.widgets.Text;
import org.eclipse.ui.IWorkbenchPart;
import org.eclipse.ui.views.properties.IPropertySource;
import org.eclipse.ui.views.properties.tabbed.AbstractPropertySection;
import org.eclipse.ui.views.properties.tabbed.ITabbedPropertyConstants;
import org.eclipse.ui.views.properties.tabbed.TabbedPropertySheetPage;
import org.eclipse.jface.util.Assert;

import de.mpg.mpiwg.itgroup.digilib.digiImage.DigiImage;
import de.mpg.mpiwg.itgroup.digilib.digiImage.DigiImageParameter;

public class DigiImagePropertySection extends AbstractPropertySection {
		  
		private DigiImage digiImage;
		private Map<String,Text> texts = new HashMap<String,Text>();
		
		
		private Map<String,ModifyListener> listeners = new HashMap<String,ModifyListener>();
		private Button button;
		
		
		
	        
	      
	        
	        public void createControls(Composite parent,
	                TabbedPropertySheetPage aTabbedPropertySheetPage) {
	            super.createControls(parent, aTabbedPropertySheetPage);
	     
	            DigiImageParameter dp = new DigiImageParameter("");
	            GridLayout gridLayout = new GridLayout(1,false);
	            parent.setLayout(gridLayout);
	            for (String key: dp.createMapFromParameters(null).keySet()){
	            	
	                Composite composite = getWidgetFactory()
	                .createFlatFormComposite(parent);
	            FormData data;
	    
	            Text t = getWidgetFactory().createText(composite, "");
	            texts.put(key, t);
	            data = new FormData();
	            data.left = new FormAttachment(0, STANDARD_LABEL_WIDTH);
	            data.right = new FormAttachment(100, 0);
	            data.top = new FormAttachment(0, ITabbedPropertyConstants.VSPACE);
	            t.setLayoutData(data);
	            
	          
	            CLabel labelLabel = getWidgetFactory()
	                .createCLabel(composite, key); //$NON-NLS-1$
	            data = new FormData();
	            data.left = new FormAttachment(0, 0);
	            data.right = new FormAttachment(t,
	                -ITabbedPropertyConstants.HSPACE);
	            data.top = new FormAttachment(t, 0, SWT.CENTER);
	            labelLabel.setLayoutData(data);
	        }
	            Composite composite = getWidgetFactory()
                .createFlatFormComposite(parent);
	            button = getWidgetFactory().createButton(composite, "redraw", SWT.None);
	            
	        }
	    
	        public void setInput(IWorkbenchPart part, ISelection selection) {
	            super.setInput(part, selection);
	
	            Assert.isTrue(selection instanceof IStructuredSelection);
	            Object input = ((IStructuredSelection) selection).getFirstElement();
	            Assert.isTrue(input instanceof DigiImage);
	            this.digiImage = (DigiImage) input;
	            
	            Map<String, String> pms = digiImage.getParameter().createMapFromParameters(null);
	            
	            for(String key: digiImage.getParameter().createMapFromParameters(null).keySet()){
	            	
	            
	            ModifyListener listener = new PropertyListener(key,digiImage); 
	            
	            texts.get(key).addModifyListener(listener);
	            listeners.put(key, listener);
	            }
	            button.addMouseListener(new RedrawButtonListener(digiImage,texts));
	    
	        }
	        
	        public void refresh() {
	        	
	        	 DigiImageProperties properties = (DigiImageProperties) digiImage
	                .getAdapter(IPropertySource.class);
	        
	        	for(String key: texts.keySet()){
	        		
	        	Text labelText=texts.get(key);
	            labelText.removeModifyListener(listeners.get(key));
	           
	            labelText.setText((String)properties.getPropertyValue(key));
	            labelText.addModifyListener(listeners.get(key));
	           
	        }
	        	super.refresh();
	        }

	        @Override
	        public void aboutToBeShown() {
	        	System.out.println("about to be shown");
	        
	        	
	        super.aboutToBeShown();
	        }
}