My interest is identifying common and useful patterns for application developers to use in rich-client development. I've seen various designs in project reviews and also various designs that have been written in a more permanent way. Inside these designs are the useful patterns, but describing them is often not easy. Take Model-View-Controller as an example. It's often referred to as a pattern, but I don't find it terribly useful to think of it as a pattern because it contains quite a few different ideas. Different people reading about MVC in different places take different ideas from it and describe these as 'MVC'. If this doesn't cause enough confusion you then get the effect of misunderstandings of MVC that develop through Semantic Diffusion.
I shall begin this exploration with an architecture that is both simple and familiar. It doesn't have a common name, so for the purposes of this essay I shall call it "Forms and Controls". It's a familiar architecture because it was the one encouraged by client-server development environments in the 90's - tools like Visual Basic, Delphi, and Powerbuilder. It continues to be commonly used, although also often vilified by design geeks like me.
The controls display data - in this case about the reading. This data will pretty much always come from somewhere else, in this case let's assume a SQL database as that's the environment that most of these client-server tools assume. In most situations there are three copies of the data involved:
Data Binding handles much of the functionality of a client-sever application pretty nicely. If I change the actual value the column is updated, even changing the selected station alters the currently selected row in the record set, which causes the other controls to refresh.
There are various ways of getting this kind of thing to work - the common one for client-server toolkits was the notion of events. Each control had a list of events it could raise. Any external object could tell a control that it was interested in an event - in which case the control would call that external object when the event was raised. Essentially this is just a rephrasing of the Observer pattern where the form is observing the control. The framework usually provided some mechanism where the developer of the form could write code in a subroutine that would be invoked when the event occurred. Exactly how the link was made between event and routine varied between platform and is unimportant for this discussion - the point is that some mechanism existed to make it happen.
Probably the widest quoted pattern in UI development is Model View Controller (MVC) - it's also the most misquoted. I've lost count of the times I've seen something described as MVC which turned out to be nothing like it. Frankly a lot of the reason for this is that parts of classic MVC don't really make sense for rich clients these days. But for the moment we'll take a look at its origins.
The presenter then decides how to react to the event. Potel discusses this interaction primarily in terms of actions on the model, which it does by a system of commands and selections. A useful thing to highlight here is the approach of packaging all the edits to the model in a command - this provides a good foundation for providing undo/redo behavior.
The Dolphin description is similar. Again the main similarity is the presence of the presenter. In the Dolphin description there isn't the structure of the presenter acting on the model through commands and selections. There is also explicit discussion of the presenter manipulating the view directly. Potel doesn't talk about whether presenters should do this or not, but for Dolphin this ability was essential to overcoming the kind of flaw in Application Model that made it awkward for me to color the text in the variation field.
One of the variations in thinking about MVP is the degree to which the presenter controls the widgets in the view. On one hand there is the case where all view logic is left in the view and the presenter doesn't get involved in deciding how to render the model. This style is the one implied by Potel. The direction behind Bower and McGlashan was what I'm calling Supervising Controller, where the view handles a good deal of the view logic that can be described declaratively and the presenter then comes in to handle more complex cases.
You can also move all the way to having the presenter do all the manipulation of the widgets. This style, which I call Passive View isn't part of the original descriptions of MVP but got developed as people explored testability issues. I'm going to talk about that style later, but that style is one of the flavors of MVP.
There are obvious similarities between MVP presenters and MVC controllers, and presenters are a loose form of MVC controller. As a result a lot of designs will follow the MVP style but use 'controller' as a synonym for presenter. There's a reasonable argument for using controller generally when we are talking about handling user input.
Let's look at an MVP (Supervising Controller) version of the ice-cream monitor ( Figure 12). It starts much the same as the Forms and Controls version - the actual text field raises an event when its text is changed, the presenter listens to this event and gets the new value of the field. At this point the presenter updates the reading domain object, which the variance field observes and updates its text with. The last part is the setting of the color for the variance field, which is done by the presenter. It gets the category from the reading and then updates the color of the variance field.
The Humble Dialog Boxpaper uses a presenter, but in amuch deeper way than the original MVP. Not just does the presenter decide how to reactto user events, it also handles the population of data in the UIwidgets themselves. As a result the widgets no longer have, nor need,visibility to the model; they form a Passive View, manipulated by the presenter.
You can look up your presentation time on the Author Abstract Assignments page. All presentation times are shown in Glasgow, Scotland time, UTC/GMT +1. You should be prepared to present your talk at any time during your session. If a presenter that precedes you is unable to present, the session chair may decide to move your talk to an earlier time within the session.
Presenter modes for screen and window sharing enable immersive presentations on Teams meetings merging video and content on the stage. Now, presenters can decide how they will be shown with respect to the content. In Standout, Reporter and Side-by side mode, they can now choose to appear on the left or right and adjust the video feed size to better fit for each type of presentation.
New buttons have been added to the presenter modes preview window for changing the layout customization. The customizations will remain in case the presenter closes the window. You can use this new feature by:
Got feedback on features in the public preview or other areas of Teams? Let us know straight from Teams via Help > Give feedback. This is on the bottom left of the your client.
Currently, attendees who join a meeting using the HTML client can view your screen, windows, or open applications that you share in the Share pod. They can also view shared whiteboards and all supported files in the Share pod. Connect also supports native views of PDF, PPT, MP3, MP4, Presenter, Captivate, and Whiteboard in HTML client. In MP3 and MP4 videos, Hosts can hide the play bar for HTML Participants. Due to the Autoplay policy introduced in all browsers, HTML Participants must allow the playback of shared video and audio files.
Connect displays only hybrid Captivate and Presenter content to HTML client users. As a meeting Host, if you upload new non-hybrid Captivate and Presenter content, Connect shows a warning message that the content will not be displayed to HTML users. If you reshare previously uploaded PPTs, Connect prompts to run the conversion process to make the content visible to HTML and Flash participants. If you reshare existing non-hybrid Presenter and Captivate content, a warning message informs that the content will not be visible to HTML participants.
As a host or presenter in a meeting, you can share windows, applications, or your entire desktop. Your account administrator can restrict the applications and processes that you can share. As a participant in a meeting, to share your screen, a host must give you permission or promote you to a presenter or host. If users have a dual monitor setup, upon clicking Share My Screen, users get an option to share either of the two monitors. However, only one screen can be shared at a time.
When you share anything on your computer screen, actions you take in the shared region are visible to all participants in the meeting. Participants follow the progress of your cursor as you move it across your screen. When starting a screen share, the hosts and the presenters can enforce their settings for the participants. The Share pod can be opened in full screen mode for all attendees for a better viewing experience.
Thepresenter can take multiple actions from the MiniControl and canaccess some pods, like the Chat pod and the Attendees pod. If apod is not available in the meeting room, its icon in the MiniControlis disabled. The presenter can also see the in-meeting notificationsin the palette.
Asa host or presenter, you can share documents that have been uploadedto the Content library, or share documents directly from your computer.Sharing documents from the Content library has the following advantagesover sharing your screen:
As a host or presenter, you can share the supported file types from the Content library or your computer. The Content library is available in Adobe Connect Central. In a meeting, you can share GIF content from the Content Library. However, GIF format is not supported when you share content by browsing to your local file system using the file picker dialog.
df19127ead