Bug 32378 Java Build Path properties page [general issue] [build path]
The Java Build Path properties page should refresh when it is opened and should also have an apply button. We are running into problems because we also contribute a properties page to Java projects that edits the build properties and it is unclear what the current state of the build path is. There are two main problems. First, the user opens our page, modifies and applies the change and then goes to the Java Build Path page where the change is not available because it is not refreshed. At this point if the user modifies the Java Build Path page and exits. The changes he first made are wiped out and replaced with current state of the Java Build Path page. Second, the user opens the Java Build Path page and modifies some information and then goes to our page; these changes are unavaible. It would be nice if the user could have applied the changes from the Java Build Path page to make them avaible to our page. We are able to handle this state (in English at least) because our page comes after the Java Build path page and is saved last. Ultimatly, the best solution would be to create an in memory copy of the Build Properties that both pages could use without these synchronization issues.
org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/wizards/buildpaths/BuildPathsBlock.java
item.setData(fLibrariesPage);
		item.setControl(fLibrariesPage.getControl(folder));
		
		
		Image cpoImage= JavaPluginImages.DESC_TOOL_CLASSPATH_ORDER.createImage();
		composite.addDisposeListener(new ImageDisposer(cpoImage));	
		
		ClasspathOrderingWorkbookPage ordpage= new ClasspathOrderingWorkbookPage(fClassPathList);		
		item= new TabItem(folder, SWT.NONE);
		item.setText(NewWizardMessages.getString("BuildPathsBlock.tab.order")); 
		item.setImage(cpoImage);
		item.setData(ordpage);
		item.setControl(ordpage.getControl(folder));
				
		if (fCurrJProject != null) {
			fSourceContainerPage.init(fCurrJProject);
			fLibrariesPage.init(fCurrJProject);
			fProjectsPage.init(fCurrJProject);
		}		
						
		Composite editorcomp= new Composite(composite, SWT.NONE);	
	
		DialogField[] editors= new DialogField[] { fBuildPathDialogField };
		LayoutUtil.doDefaultLayout(editorcomp, editors, true, 0, 0);
		
		int maxFieldWidth= converter.convertWidthInCharsToPixels(40);
		LayoutUtil.setWidthHint(fBuildPathDialogField.getTextControl(null), maxFieldWidth);
		LayoutUtil.setHorizontalGrabbing(fBuildPathDialogField.getTextControl(null));
	
		editorcomp.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));