package LinGUIne.parts.advanced; import org.eclipse.swt.SWT; import org.eclipse.swt.custom.StyledText; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.widgets.Composite; import LinGUIne.extensions.IEditorSettings; import LinGUIne.extensions.IProjectDataEditor; import LinGUIne.model.IPlaintextViewable; import LinGUIne.model.IProjectData; import LinGUIne.model.Project; /** * Simple un-editable viewer of ProjectDataContents objects which implement * IPlaintextViewable. * * @author Kyle Mullins */ public class UneditableTextViewer implements IProjectDataEditor { private StyledText textArea; private Project parentProject; private IProjectData projectData; private IPlaintextViewable textViewableContents; @Override public boolean canOpenData(IProjectData data, Project proj){ return data.getContents() instanceof IPlaintextViewable; } @Override public boolean hasEditorSettings() { return false; } @Override public IEditorSettings getEditorSettings() { return null; } @Override public void createComposite(Composite parent) { Composite container = new Composite(parent, SWT.NONE); container.setLayout(new GridLayout(1, false)); textArea = new StyledText(container, SWT.V_SCROLL | SWT.H_SCROLL); textArea.setLayoutData(new GridData(GridData.FILL_BOTH)); textArea.setEditable(false); textArea.setAlwaysShowScrollBars(true); textArea.append(textViewableContents.getAsPlaintext()); } @Override public void setInputData(IProjectData data, Project parentProj) { if(canOpenData(data, parentProj)){ parentProject = parentProj; projectData = data; textViewableContents = (IPlaintextViewable)data.getContents(); } else{ throw new IllegalArgumentException("This class only supports "); } } @Override public IProjectData getInputProjectData() { return projectData; } @Override public Project getInputParentProject() { return parentProject; } @Override public void registerDirtyStateListener(DirtyStateChangedListener listener){} @Override public boolean saveChanges(){ return false; } @Override public String getPartLabel() { return projectData.getName(); } @Override public String getPartIconURI() { return null; } }