Jump to: navigation, search

Difference between revisions of "Platform UI/Plan/4.4"

(Themes)
(CSS Enhancements)
 
(4 intermediate revisions by 3 users not shown)
Line 1: Line 1:
 
= Planning page for Luna =
 
= Planning page for Luna =
  
Draft to develop a plan for our work in Luna
+
The 'plan broken' out by bug is on [[Platform UI/Plan/4.4/Milestones]].
  
 
= Themes =
 
= Themes =
Line 18: Line 18:
  
 
* {{bug|376486}} - Eclipse 4 IDE not extendable via fragments or processors
 
* {{bug|376486}} - Eclipse 4 IDE not extendable via fragments or processors
 +
* {{bug|406307}} - [E4] Support POJOs in plugin.xml based extensions points for Views, Editors, Handlers
 +
* {{bug|403930}} - E4 and E3 selection services are not connected
  
 
=== Menus, Commands, and Handlers ===
 
=== Menus, Commands, and Handlers ===
Line 110: Line 112:
 
* Enhancements to use it more throughout SWT.
 
* Enhancements to use it more throughout SWT.
 
* How the CSS interacts with the Model
 
* How the CSS interacts with the Model
* Moving the CSS engine up to the latest Batik.
+
* Moving the CSS engine up to the latest Batik ({{bug|266174}}) — or possibly replace Batik if another candidate can be found?
 
* Provide some reasonable bridge interactions between CSS and our older Colors and Fonts properties.
 
* Provide some reasonable bridge interactions between CSS and our older Colors and Fonts properties.
 +
 +
Other bugs related to the CSS processing that we can consider:
 +
 +
* {{bug|398277}} - swt-show-close inconsistent with swt-x-visible
 +
* {{bug|364070}} - Divergence in "margin" and "padding" vs standard CSS
 +
* {{bug|284446}} - Need junit for ETabFolder/Item border colors
 +
* {{bug|278527}} - SWTHTMLElement's computeLocalName() doesn't cascade properly
 +
* {{bug|260795}} - Alternate fonts don't seem to work
 +
* {{bug|385572}} - IThemeEngine not injected if cssTheme in initially not set
 +
* {{bug|280797}} - Number values seem always interpreted as px
 +
* {{bug|266940}} - Create preference for active style sheet
 +
* {{bug|308931}} - Ability to style menus
 +
* {{bug|283648}} - ETabItem sizings incorrect
 +
* {{bug|278088}} - CSSPropertyBackgroundColorHandler appears unused
 +
* {{bug|279703}} - IResourceLocator.getReader() unused, not needed?
 +
* {{bug|264446}} - Model ID should be CSS ID
 +
* {{bug|374027}} - Styling for active tab in an inactive stack has become worse
 +
* {{bug|301241}} - Dynamically get SWT style bits
 +
* {{bug|284474}} - Consider uses of :first-child
 +
* {{bug|262855}} - Manage better pseudo classes (like :focus...)
 +
* {{bug|283785}} - org.eclipse.e4.ui.examples.css could remove org.apache.batik.xml as a dependency
 +
* {{bug|398475}} - CSS3 property 'font-size-adjust' is called 'font-adjust' in SWT CSS renderer
 +
* {{bug|273352}} - applyCSSProperty is being called with all static pseudo selectors
 +
* {{bug|278139}} - Commas come in as Measures, seems wrong
 +
* {{bug|325583}} - Image paths must be relative to contributing CSS
 +
* {{bug|259832}} - @media should be ignored
 +
* {{bug|287335}} - CSSSWTConstants should be an interface
 +
* {{bug|279850}} - Add API for add/remove css classname
 +
* {{bug|278638}} - Gradient images are not disposed on widget dispose
 +
* {{bug|281302}} - CSSStylingSupport's IStylingEngine implementation styles too eagerly
 +
* {{bug|405731}} - Part tab font not using system font
 +
* {{bug|285316}} - Workspace hangs on resize for some style sheets
 +
* {{bug|398436}} - Active stack no longer updates
 +
* {{bug|374196}} - Regression: Initial workbench window looks ugly / screen cheese / strange color
 +
* {{bug|386743}} - Workbench window toolbar has rendering bugs
 +
* {{bug|278570}} - CSSTableLabelProvider does not work
 +
* {{bug|285318}} - 'Over' styling - too many widget calls
 +
* {{bug|56558}}  -  Provide UI to set fonts for trees and tables
  
 
== Stability and Performance ==
 
== Stability and Performance ==

Latest revision as of 05:21, 15 July 2013

Planning page for Luna

The 'plan broken' out by bug is on Platform UI/Plan/4.4/Milestones.

Themes

The general themes that we should focus on in Luna. Currently not in priority order.

Exposing Eclipse4 in the Workbench

Migration path for 3.x plugins

  • Figure out how a 3.x extension point can take advantage of contexts and DI

Hosting Eclipse4 Models

The Workbench (a.k.a compatibility layer) manipulates the model to host 3.x views and editors on it. In Luna we'd like to see Eclipse4 parts and other contributions contributed to the Workbench and provide 3.x wrappers to correctly interact with them in the Workbench.

  • bug 376486 - Eclipse 4 IDE not extendable via fragments or processors
  • bug 406307 - [E4] Support POJOs in plugin.xml based extensions points for Views, Editors, Handlers
  • bug 403930 - E4 and E3 selection services are not connected

Menus, Commands, and Handlers

Handlers in the Workbench are currently clustered on their own IEclipseContext just off of the application context. The handlers in Eclipse4 can be instantiated at any MContext level, and that controls their activation and enablement much finer grained. The goal is to expose this distribution on handlers contributed through the Workbench.

IEclipseContext and DI Use

The IEclipseContext represent a runtime hierarchy of information. The goal is to have a regular pattern and predictable use, so that looking up information at any point in the hierarchy will return the appropriate answer.

Some mechanisms it supports we need to rationalize:

  1. setting the value for a variable, and then use context.getActiveLeaf().get(variable)
  2. using context.modify(variable, value) and then using context.get(variable)
  3. setting a variable in the application context that points to a ContextFunction. context.get(variable) will apply the ContextFunction to the current hierarchy.
  4. Review what data is in the context and whether it belongs elsewhere such as transient data.
  5. Investigate how to provide bulk updates to contexts efficiently
  6. Investigate threading problems

Fragments and Extension Points

The fragment processing needs some more design work. The goal is to simplify the creation of fragments and to apply them in a standard way that is predictable.

Some enhancements in that area:

  • bug 324954 - [Model] Allow model fragments to use XPath-Syntax to decide where to contribute
  • bug 396974 - Multiple Parents for MenuContribution item

It would be nice if there was a tool where you could create your structure, select elements, and generate a fragment.

Graduate Relevant Eclipse4 tools

There are tools still in the E4 incubator that we should look at graduating or moth balling in Luna. Some currently under consideration:

The Lightweight CSS editor will probably need some work before it can graduate, as it would bring in the XText runtime. See bug 410841 - Explorer editing CSS with orion

Eclipse Application Services

See E4/Eclipse Application Services as a starting point, although our understanding has changed some of the categories.

Logging and Tracing

We need to decide on our logging and tracing strategies, and which APIs to use (ex, just use Equinox Logging and DebugTrace or SLF4J?). Then we need to apply that strategy to many of our new Eclipse4 plugins.

Scheduling Work

There was some discussion about using equinox concurrent support, and re-framing our scheduling/progress in terms of that. We need to analyze the difference between Jobs and IWorkbenchRunnableWithProgress and the concurrent support, and then look at our Eclipse4 level support. i.e. Do we use Jobs + provide Progress? Does Jobs need to be in terms of equinox concurrent? Do we need a parallel progress pattern with equinox concurrent?

Save Lifecycle

We need to provide the fully functioning Eclipse4 save lifecycle, that the Workbench save lifecycle can be implemented on top of.

Workbench Services Decoupling

It's always been our goal to break up many of the Workbench services so they can be consumed by Eclipse4 applications without consuming the entire Workbench. Some examples:

  • ISharedImages service
  • Progress view service
  • Error log service
  • Preference management
  • Properties management
  • New wizards

Our starting priority here was the Error log and Progress view.

  • bug 404727 - Make 3.x workbench resources available for e4 apps
  • bug 401655 - Create e4 based Progress View

Application Startup and Lifecycle

The goal is that the Eclipse4 application startup and lifecycle make sense, and the Workbench startup fits in the appropriate place.

For example, it's reasonable that the Workbench startup should create a useful model that can then be passed to the Eclipse4 application startup. There are a number of lifecycle hooks that should probably be made available in the Eclipse4 startup.

There are also more general discussions about lifecycle:

  • bug 398837 - We need to revamp the e4 life cycle handling
  • bug 392903 - Easier and more powerful lifecycle handling for Windows, Perspectives

CSS Enhancements

The goal here is to improve our CSS story.

  • The workflow of how we load and use CSS within eclipse
  • Enhancements to use it more throughout SWT.
  • How the CSS interacts with the Model
  • Moving the CSS engine up to the latest Batik (bug 266174) — or possibly replace Batik if another candidate can be found?
  • Provide some reasonable bridge interactions between CSS and our older Colors and Fonts properties.

Other bugs related to the CSS processing that we can consider:

  • bug 398277 - swt-show-close inconsistent with swt-x-visible
  • bug 364070 - Divergence in "margin" and "padding" vs standard CSS
  • bug 284446 - Need junit for ETabFolder/Item border colors
  • bug 278527 - SWTHTMLElement's computeLocalName() doesn't cascade properly
  • bug 260795 - Alternate fonts don't seem to work
  • bug 385572 - IThemeEngine not injected if cssTheme in initially not set
  • bug 280797 - Number values seem always interpreted as px
  • bug 266940 - Create preference for active style sheet
  • bug 308931 - Ability to style menus
  • bug 283648 - ETabItem sizings incorrect
  • bug 278088 - CSSPropertyBackgroundColorHandler appears unused
  • bug 279703 - IResourceLocator.getReader() unused, not needed?
  • bug 264446 - Model ID should be CSS ID
  • bug 374027 - Styling for active tab in an inactive stack has become worse
  • bug 301241 - Dynamically get SWT style bits
  • bug 284474 - Consider uses of :first-child
  • bug 262855 - Manage better pseudo classes (like :focus...)
  • bug 283785 - org.eclipse.e4.ui.examples.css could remove org.apache.batik.xml as a dependency
  • bug 398475 - CSS3 property 'font-size-adjust' is called 'font-adjust' in SWT CSS renderer
  • bug 273352 - applyCSSProperty is being called with all static pseudo selectors
  • bug 278139 - Commas come in as Measures, seems wrong
  • bug 325583 - Image paths must be relative to contributing CSS
  • bug 259832 - @media should be ignored
  • bug 287335 - CSSSWTConstants should be an interface
  • bug 279850 - Add API for add/remove css classname
  • bug 278638 - Gradient images are not disposed on widget dispose
  • bug 281302 - CSSStylingSupport's IStylingEngine implementation styles too eagerly
  • bug 405731 - Part tab font not using system font
  • bug 285316 - Workspace hangs on resize for some style sheets
  • bug 398436 - Active stack no longer updates
  • bug 374196 - Regression: Initial workbench window looks ugly / screen cheese / strange color
  • bug 386743 - Workbench window toolbar has rendering bugs
  • bug 278570 - CSSTableLabelProvider does not work
  • bug 285318 - 'Over' styling - too many widget calls
  • bug 56558 - Provide UI to set fonts for trees and tables

Stability and Performance

Stability

We still have some immediate issues to address in terms of stability and performance. See our Platform UI 4.3.1 bug list.

We will continue to focus on regressions, and improvements in the UX workflows. Some bugs we've already collected for 4.4.

Performance

We have existing performance bugs, such as:

  • bug 385394 - Performance issue regarding enabled state handling for menuContributions
  • bug 373294 - Improve startup time
  • bug 406042 - Performance degrade on createEditorActionBars() call

In addition, we are going to do a performance pass early this year, probably in the M3 timeframe.