text:
Difference between revisions of "GMF Newsgroup Q and A"
|Line 1:
|Line 1:
This page contains a number of useful Q&As that are found on the newsgroup. Please add/edit/organize as needed.
This page contains a number of usefulQ&As that are found on the newsgroup. Please add/edit/organize as needed.
====[http://dev.eclipse.org/newslists/news.eclipse.modeling.gmf/msg02022.html How do I get ports to stick to the side of a component?]====
====[http://dev.eclipse.org/newslists/news.eclipse.modeling.gmf/msg02022.html How do I get ports to stick to the side of a component?]====
|Line 720:
|Line 720:
Use Label Offset Facet to adjust the position.
Use Label Offset Facet to adjust the position.
Revision as of 17:59, 3 November 2006
This page contains a number of useful/interesting Q&As that are found on the newsgroup. Please add/edit/organize as needed.
- 1 How do I get ports to stick to the side of a component?
- 2 How do I change the color of a line using an action?
- 3 How do I create a scalable note figure with folded corner?
- 4 How to scroll a background image?
- 5 How do I prevent figure overlap?
- 6 How to have children of an entity removed automatically?
- 7 How to change an attribute of an object when clicked?
- 8 How to access attributes of an object related to a node?
- 9 How to notify the diagram when domain model changes?
- 10 Why does removing a link from the diagram not remove the underlying element?
- 11 Why does MultiClientContext.includes() return true only if all the children contexts return true?
- 12 How do I draw an ellipse inside another ellipse?
- 13 How can I hide an edge on a diagram?
- 14 Is it possible to render diagram images running headless?
- 15 How do I prevent the destruction of an element?
- 16 How can I tell were in my generator model I have a validation error?
- 17 How to create required elements on diagram when created?
- 18 How do I set a ConnectionRouter?
- 19 Is Affixed Parent Side only respected on creation?
- 20 How can I show/hide compartment contents programmatically?
- 21 How to change the view of an existing element?
- 22 How can I add a tooltip to a diagram element?
- 23 How to enable drag-n-drop from the palette?
- 24 How can I remove the connection handles from my diagram?
- 25 How can I modify what is provided in the model assistance popups?
- 26 How can I remove model assistant popups entirely?
- 27 How can I allow for the rearrangement of items in a compartment?
- 28 How can I make my domain element aware of a view element's coordinates?
- 29 How to make copy/paste work on compartments?
- 30 How to create two unsynchronized diagrams for one domain model instance?
- 31 How can I position a label at the end of a link?
- 32 How can I constrain node movement/resize?
How do I get ports to stick to the side of a component?
- Q: My first problem was that I couldn't find a good way to get the ports stick to the component since apparently GMF doesn't support nodes
- A: Did you try setting affixedParentSide attribute for port Node in .gmfgraph model? This attribute was recently added and is available in 2.0 builds.
How do I change the color of a line using an action?
- Q: I'm able to call a created Action by popup menu, but i want to know how to change EditPart's attributes such as colors of connections, for example.
Any hint?
- A: Visual attributes (like color, line width , ... ) are attributes of the figure, and they usually reflect styles on the Notation view
To change the line color on a view you can use the LineStyle (from the notation meta model). LineStyle had setLineColor method that allows you to change the line color.
For examples on how to change styles check SetPropertyCommand and ColorPropertyContributionItem
Here is one of the ways to do it:
First you create a change property request like this
ChangePropertyValueRequest req = new ChangePropertyValueRequest( StringStatics.BLANK,Properties.ID_LINECOLOR, FigureUtilities.colorToInteger(DiagramColorConstants.red));
you will notice that I'm passing the line color as the property ID, and Red as the value. Now, we can call get command on the edit part, passing it the request we just created.
final Command cmd = editPart.getCommand(req);
Then execute the returned command (should check for null before trying to execute) like this:
AbstractEMFOperation operation = new AbstractEMFOperation(((IGraphicalEditPart) editPart).getEditingDomain(), StringStatics.BLANK, null) { protected IStatus doExecute(IProgressMonitor monitor, IAdaptable info) throws ExecutionException { cmd.execute(); return Status.OK_STATUS; } }; try { operation.execute(new NullProgressMonitor(), null); } catch (ExecutionException e) { // nothing to do here }
This should change the line color to red.
How do I create a scalable note figure with folded corner?
- Q: What's an elegant way to create a figure like the ones used for notes (the sheet with a dog-ear, i.e. a triangle bent down in the upper right)? Is there a gallery or resource that one can import for that? With "elegant" I also mean, that the figure should nicely resize, provide a reflowing label, etc. etc,
- A: The figure used by notes is called NoteFigure it is public in the plugin org.eclipse.gmf.runtime.diagram.ui. You can use it or subclass it to do any customizations you need.
The way to use change the figure created by the edit part is to change the code in the your edit part's createFigure() method to create a NoteFigure or a subclass of it.
I've tried a very simple case with the generated code where i use the note figure instead of the generated figure , and noticed that width and height works as i expect. It respect the value i pass (as long as I just drop the shape on the diagram surface, otherwise it will use the exact rectangle i draw on the diagram surface).
This is the way I create my figure :
/** * @generated Not */ protected IFigure createNodeShape() { Insets insets = new Insets(getMapMode().DPtoLP(30), getMapMode().DPtoLP(30), getMapMode().DPtoLP(30), getMapMode().DPtoLP(45)); primaryShape = new MyFigure(getMapMode().DPtoLP(300), getMapMode().DPtoLP(400), insets); return primaryShape; }
I have not tried to add labels though.
How to scroll a background image?
- Q: I have set a background image in gmf editor however i need to set the bounds to enable scrolling (to move through the image) (and not only when a figure is on it). How can i achieve this?
- A: That depends on how you've set the diagram background; if you've overridden paintFigure() in diagram FreeformLayer you should override method that calculates freeform extent to return the image size. Another way is to add mouse-transparent ImageFigure to diagram layer; in this case freeform extent should be large enough to fit background and so there should be scrollers.
How do I prevent figure overlap?
- Q: How can I prevent my figures in the editor to overlap?
i.e. when the user moves/drags them around, I want to prohibit positions when one is displayed on top of another (think of a graph editor where the nodes are small circles - I don't want them to overlap).
- A: This topic was already discussed but there are two possibilities: constrain node location on move (adjust location in SetConstraintsCommand or add vetoing command from another edit policy when location is bad) or do special layout after each diagram modification that will relocate overlapping figures. You could do the both to ensure that your nodes never overlap - even when location is altered from another editor.
How to have children of an entity removed automatically?
- Q: I'm having trouble in getting the children of an entity be removed automatically: my purpose is to add and remove _transient_ children of an entity when changing an unrelated attribute, such as the name of the entity.
The solution I adopted is to modify the setName() method in the EMF-generated impl class, adding the proper eSet calls.
The result is, when editing a diagram with the generated editor, changing the name of such an entity triggers an update in the children list adding figures for newly-added children, but *not removing* figures for the just-removed children, which have been semantically removed, but not graphically.
Closing and re-opening the diagram results in the removal of the orphan figures.
- A: Generated ???CanonicalEditPolicy is responsible for adding/removing visual elements on any changes in underlying domain model. Looks like it works incorrectly in this situation. Can you please debug it to find the reason (put a breakpoint into getSemanticChildrenList() method and see what's happening on renaming an entity)?
As a workaround you can call ???CanonicalEditPolicy.refresh() the the corresponding changes will be applied.
The Fact that should Delete View is overridden in some cases is actually done on purpose and it is not arbitrary. To explain, consider the case where you have a canonical container that can contains both canonical and non canonical views for example the diagram surface can display both canonical views, and Notes (keep in mind notes had no semantic elements, so note views will be considered orphaned). If should delete view returns true always, then when your container is refreshed it will delete all notes on it (actually it will delete any view that had no semantic element).
You can always override this method and make it return true in your specific case, I would not recommend return true always
for an example of a container that can contain canonical and non canonical views, check the circuit compartment in the GMF Logic example, where this compartment is canonical when is comes to LED's, but it can contains Notes as well.
How to change an attribute of an object when clicked?
- Q: I am working in the creation of a gmf editor, and I would like to be able to change an attribute of an object when it is clicked, for example the color.
I have read the topics related: http://dev.eclipse.org/newslists/news.eclipse.technology.gmf/msg03725.html http://dev.eclipse.org/newslists/news.eclipse.modeling.gmf/msg01089.html
and added a new class extending OpenEditPolicy, and also installed that EditPolicy in the appropiate EditPart file, but it does not seem to work.
I am not sure OpenEditPolicy is the class I should extend for my case. I would really glad if someone could give me a hint.
- A: To handle double-click you should install custom subclass of OpenEditPolicy for the desired editpart:
protected void createDefaultEditPolicies() { … installEditPolicy(EditPolicyRoles.OPEN_ROLE, new SubclassOfOpenEditPolicy()); }
As a result, SubclassOfOpenEditPolicy.getOpenCommand(Request request) will be called and corresponding command will be executed on double-clicking to the diagram node. Be careful – you should select whole node first (selection frame around the node should be visible) and only then double-click to the node. If you double-click on node without selection there is a big chance to hit inner compartment or label and then corresponding child element will be selected instead of Double-click command execution.
- Q: have already installed my custom subclass of OpenEditPolicy in my ObjectEditPart and I have added code to the function SubclassOfOpenEditPolicy.getOpenCommand(Request request) in this way:
protected Command getOpenCommand(Request request) { EditPart targetEditPart = getTargetEditPart(request); if (targetEditPart instanceof IGraphicalEditPart) { IGraphicalEditPart editPart = (IGraphicalEditParttargetEditPart; editPart.getContentPane().setBackgroundColor(ColorConstants.red); ....
So, as expected, when the node is double-clicked it turns red. My problem now is how to access the attributes of the object related with that node.
((View) EditPart.getModel()).getElement()is a correct way to access underlying domain model element.
How to notify the diagram when domain model changes?
- Q: From a property tab sheet I'm creating/deleting/editing some EMF elements that do not have a graphical representation. Once the changes are made I want to save the diagram but as the diagram has not been changed I am not allowed to save. You must make a change in the diagram to be able to save it.
Does anyone know how to make a notification to the diagram warning it that something has been changed?
- A: Take a look on generated ???DocumentProvider.CustomModificationListener - this code is responsible for making editor dirty. Looks like some of the necessary notifications are not handled there.
I found the solution in reply of one of you answers: http://dev.eclipse.org/newslists/news.eclipse.modeling.gmf/msg00329.html
NotificationFilter setFilter = NotificationFilter.createEventTypeFilter(Notification.SET); NotificationFilter addFilter = NotificationFilter.createEventTypeFilter(Notification.ADD); NotificationFilter addManyFilter = NotificationFilter.createEventTypeFilter(Notification.ADD_MANY); NotificationFilter removeFilter = NotificationFilter.createEventTypeFilter(Notification.REMOVE); NotificationFilter removeManyFilter = NotificationFilter.createEventTypeFilter(Notification.REMOVE_MANY); NotificationFilter diagramResourceModifiedFilter = setFilter.or(addFilter.or(addManyFilter.or(removeFilter.or(removeManyFilter))));
So problem solved!!
Why does removing a link from the diagram not remove the underlying element?
- Q: I can hit the breakpoint set in NotationViewDependentsAdvice. However, I was unfortunately not be able to hit my breakpoint set in the Advices methods in the domain model, specifically, I overwrite getDestroyDependentsCommand(...) method in my XXXEditHelper class, but I found the execution flow never reach that method when I delete a figure with link to other figures.
Consequently, the Node and Edge are removed from the view, the Object represented by the node is also removed from the domain model, but the object representend by the edge doesn't.
Do you know where I am wrong?
Another finding, the Edge is NOT actually removed from the view, it is still there, just not visible to user (since no target Node). I reach to this conclusion because every time after I have mannually removed the link object from the domain model xml file, and then I do some operation like arrange figures and save the diagram file, I found the removed link object come out like a ghost in the domain model xml file.
- A: The NotationViewDependentsAdvice, will delete the edges connected to the view but it will not delete the semantic element for the edges it is destroying; since this semantic element might be used but other edges. If you need to delete the semantic element when the edge is deleted you need to handle that in your own advice, but be careful since the semantic element might be used by other views.
Why does MultiClientContext.includes() return true only if all the children contexts return true?
- Q: I just noticed that MultiClientContext.includes() returns true if ALL of the child contexts' includes() return true. Why is that? I'm using a single editor to edit objects from multiple plugins, so each plugin must have the same editing domain, which results in a MultiClientContext. Only one of the children will return true (as only one plugin is aware of the element type); there is no way that multiple contexts will return true, so therefore the MultiClientContext will never return true.
I was wondering about the design decision to make MultiClientContext return true only if all contexts return true; it seems the opposite of what I'm looking for ;) but it could be my interpretation of contexts is incomplete or incorrect.
I ran into this issue from lines 135 and 136 of SemanticEditPolicy:
IElementType elementType = ElementTypeRegistry.getInstance() .getElementType(completedRequest.getEditHelperContext());
DefaultMetamodelType.getInstance() is being returned because only one client context can service the request, though the response from that client context is exactly what I was hoping would be returned.
- A: The behaviour of the MultiClientContext is based on the idea that it's easier to control an application's behaviour if you have to deliberately include element types and advice in your context rather than exclude them. The idea is that if an EObject is recognized by more than one client context, only the intersection of the advice and edit helpers in those contexts will be applied to the object.
Suppose we have applications A and B that operate on the same metamodel and share the same context criteria (e.g., editing domain), but each defines its own set of editing behaviour. If the MultiClientContext included advice and element types from both applications, it's possible (probable?) that the behaviour in one application will contradict the other.
When two such applications are co-deployed, there likely needs to be a third party that makes sense of the integration. In your case this might be the plugin that defines the single editor. It could 'merge' the contexts together by binding each to the types and advice from the others. Or maybe your application would be best represented by a single client context described by the shared editing domain?
Or do your different client contexts work with distinct metamodels in the same editing domain? If so you could restrict the criteria for each context to reflect this.
Another option is to specify the client context on your requests (IEditCommandRequest#setClientContext), so that there is no question which element types and advice should be used to perform the semantic editing. But that requires customizing tools, etc, to set the appropriate client context.
Maybe it would be nice to have an easy way for an 'integrator' (like your plugin that defines the single editor) to merge contexts? Any suggestions you have to make the API easier to work with would be most welcome.
How do I draw an ellipse inside another ellipse?
- Q: I'd like to have an Final Activity Figure in my Figure Gallery where a filled ellipse is surrounded by another one that is not filled. I tried to add one ellipse as Child to the other one, but it doesn't work
- A: here is an example on how to achieve what you want without creating extra figure:
package root.diagram.edit.parts; import org.eclipse.draw2d.Ellipse; import org.eclipse.draw2d.Graphics; import org.eclipse.draw2d.geometry.Rectangle; import org.eclipse.swt.graphics.Color; public class MyFigure extends Ellipse { /** * Fills the ellipse. * @see org.eclipse.draw2d.Shape#fillShape(org.eclipse.draw2d.Graphics) */ protected void fillShape(Graphics graphics) { graphics.pushState(); graphics.setBackgroundColor(new Color(null,255,255,255)); graphics.fillOval(getBounds()); graphics.popState(); } public void paintFigure(Graphics graphics) { super.paintFigure(graphics); graphics.pushState(); graphics.setBackgroundColor(new Color(null,0,0,0)); double scaleFactor = 0.8; Rectangle rect1 = getBounds().getCopy(); Rectangle rect = getBounds().getCopy().scale(scaleFactor); rect.x = rect1.x + (int)Math.floor(rect1.width*(1-scaleFactor)/2); rect.y = rect1.y + (int)Math.floor(rect1.height*(1-scaleFactor)/2); graphics.fillOval(rect); graphics.popState(); } }
If you use this figure instead of the Ellipse figure in your edit part, it should work. Without wasting an object (the extra figure)that basically does nothing but draw the inner ellipse
How can I hide an edge on a diagram?
- Q: I've added an action to the diagram content navigator, wich allows me to select model elements and to show/hide them in the diagram (corresponding edges should be hidden too).
This works well for nodes. But the behavior of edges seems strange to me:
1. Hiding a node results in hiding all target egdes. But only one source egde gets hidden (while all edges have visible="false").
2. Setting the visibility of a hidden node back to true results in edges appearing in the upper left corner, not connected to any nodes (visually).
Everything is fine, when I reopen the diagram. Any ideas where the mistake is?
Following code is executed:
protected CommandResult doExecuteWithResult( IProgressMonitor progressMonitor, IAdaptable info) throws ExecutionException { boolean visible = !this.selectedView.isVisible(); List sources = this.selectedView.getSourceEdges(); List targets = this.selectedView.getTargetEdges(); for (Object o : sources) { ((Edge)o).setVisible(visible); } for (Object o : targets) { ((Edge)o).setVisible(visible); } this.selectedView.setVisible(visible); return CommandResult.newOKCommandResult(); }
- A: Setting the view visibility to false will result in the removal of the view's edit part from the diagram.
As a result all connected edges to this view should disappear from the diagram surface regardless of their visibility status, otherwise these edges will be pointing to/from nowhere and might show up in the upper left corner.
To achieve this, refresh had to be called on any edit part connected to the edit part being removed.
Shape compartments do this by using a ConnectionRefreshMgr take a look at ShapeCompartmentEditPart#ConnectionRefreshMgr
I'm guessing that in your case the views are direct children of the diagram, not inside a shape compartment.
What i suggest is, just set your nodes visibility to false no need to change the visibility in the edges for now. Place a break point in refresh method in AbstractGraphicalEditPart, make sure it get called on any edit parts that is connected to the edit part being removed.
for example : if your diagram looks like this
Setting the visibility on A to false ; should result in refreshing B,C and D
If this is not the case; then this is a bug in GMF runtime
Is it possible to render diagram images running headless?
- Q: Assume we are given a model instance file and a corressponding notation file. Is there a change to produce an image of the given instance using the GMF API without launching the Eclipse UI?
- A: You can produce an image without bringing up an editor within Eclipse if this is any help.
See OffscreenEditPartFactory and CopyToImageUtil for details.
When the Diagram UI plugin starts up it initializes the preference store with font values. It is calling JFaceResources.getDefaultFont() and when a new font registry is created in SWT it requires a Display.
We have not supported this use case in the past, but I don't see why we shouldn't be able to support it assuming SWT supports this somehow. Maybe there is another way we can get the default font. I would suggest you create a bugzilla and someone can look into it.
How do I prevent the destruction of an element?
- Q: I have a problem with the DestroyElementRequest. I want to check some condition just before deleting an element from diagram so that DestroyElementCommand may be not executed. I use approveRequest() in FlowEditHelperAdvice (Flow is the diagram name):
@Override public boolean approveRequest(IEditCommandRequest request) { if (request instanceof DestroyElementRequest) { if.....return true; else return false; } return true; }
Unfortunately this method will be called with DestroyElementRequest even if no elements were deleted. How can I solve this problem?
- A: I'm not sure that I understand what you are trying to do.
The #approveRequest() method can be used to indicate that your system does not provide a command to delete the semantic element, as it has been requested. No elements will be deleted unless an executable command is returned by the system. By implementing #approveRequest() to return false, you make it so that no elements will be deleted as a result of the request.
If you want to wait to do this check until the command to delete the element (and its dependents) is actually being executed, then you can implement #getBeforeDestroyElementCommand() instead and return a command whose #doExecuteWithResult() method will cancel the progress monitor. This will cause the destroy command to stop executing and to rollback any changes it has made up to that point.
How can I tell were in my generator model I have a validation error?
- Q: When the validation fails (as part of the .gmfgen generation), ones currently has to to do a lengthy manual tree search like procedure to figure out, where and which element one has got wrong. It would be cute, if the validation would automatically directly anotate or "decorate" any offending line in the treeview so that one would be aware that something's fishy right away.
- A: If validation fails (as part of the .gmfgen generation) you can execute GMFGen Editor/Validate or GMFMap Editor/Validate action. Both produce validation markers in the 'Problems View' which allow to navigate to the affected elements in the model tree view.
How to create required elements on diagram when created?
- Q: For my application I would like to have the graphical editor come up with two predefined containers (I fancy two large labeled rectangles) inside which the user then starts creating sub-elements and connecting them, etc.
This corresponds to two top-level elements that *always* have to be present in the XML files that I am dealing with. I don't want to have to create these outermost elements, they simply should be there right from the begin (i.e. even if creating an new "empty" file or model).
Can one create such fixed and predefined figures? How?
- A: You may remove tool references for this "fixed" mappings in the Map model,
effectively removing creation tools for them. Then write custom code that creates this 2 fixed elements in the generated <Model>DiagramEditorUtil#createInitialModel(), something like
/** * Create a new instance of domain element associated with canvas. * @generated NOT */ private static org.eclipse.uml2.uml.Package createInitialModel() { org.eclipse.uml2.uml.Package root = UMLFactory.eINSTANCE.createModel(); root.setName("Model"); createDefaultPrimitiveTypeImports(root); return root; }
How do I set a ConnectionRouter?
- Q: I would like to use ManhattanConnectionRouter in my application. I try to set the ConnectionRouter in my Top Editpart but failed. It seems that the way in traditional GEF application do not work. I wonder in which way I could customize the router?
- A: I do it in the view factory corresponding to the connection:
public class ConnectionViewFactory extends org.eclipse.gmf.runtime.diagram.ui.view.factories.ConnectionViewFactory { protected List createStyles(View view) { List styles = new ArrayList(); styles.add(NotationFactory.eINSTANCE.createRoutingStyle()); styles.add(NotationFactory.eINSTANCE.createLineStyle()); styles.add(NotationFactory.eINSTANCE.createFillStyle()); return styles; } protected void decorateView(View containerView, View view, IAdaptable semanticAdapter, String semanticHint, int index, boolean persisted) { if (semanticHint == null) { semanticHint = Bluenose2VisualIDRegistry .CONNECTION_VISUAL_ID; view.setType(semanticHint); } super.decorateView(containerView, view, semanticAdapter, semanticHint, index, persisted); RoutingStyle rstyle = (RoutingStyle) view.getStyle(NotationPackage.eINSTANCE.getRoutingStyle()); rstyle.setAvoidObstructions(true); rstyle.setRouting(Routing.MANUAL_LITERAL); } }
Is Affixed Parent Side only respected on creation?
- Q: The constraint seems to be checked only at the element creation. For example, I have configured my graphical defintion with the property set as "WEST" to only attach objects on the left of the container node. Then, in my generated editor, when I create a child element, this work well, the element is attached to the left border of its container. But when I try to move it, I can also attach it to the right border. I would have expected to "only" enable attachment to the left border as this was done at the creation.
- A: The runtime actually uses the affixed side as a hint only, and does not
prevents manual relocation. You need to install custom implementation of org.eclipse.gmf.runtime.diagram.ui.figures.IBorderItemLocator that prevents this.
How can I show/hide compartment contents programmatically?
- Q: I need to show and hide compartment view dynamically. I'm developing a Use Case Diagram Editor. When I create a extend relationship between 2 usecases, I would to create show the compartment
view containing the extension points.
How can I show or hide the compartment view at the creation of a extension point?
- A: Looking for this in ResizableCompartmentEditPart:
protected void handleNotificationEvent(Notification event ) { Object feature = event.getFeature(); if (NotationPackage.eINSTANCE.getRatio_Value().equals(feature) || event.getOldValue()instanceof Ratio || event.getNewValue() instanceof Ratio) refreshRatio(); else if (NotationPackage.eINSTANCE.getDrawerStyle_Collapsed().equals(feature)){ setCollapsed(event.getNewBooleanValue(), true); this.getFigure().revalidate(); } else if (NotationPackage.eINSTANCE.getTitleStyle_ShowTitle().equals(feature)) setShowCompartmentTitle(event.getNewBooleanValue()); else if (NotationPackage.eINSTANCE.getFontStyle_FontColor().equals(feature)){ Integer c = (Integer) event.getNewValue(); setFontColor(DiagramColorRegistry.getInstance().getColor(c)); }
tells you can use an AbstractTransactionalCommand that calls GraphicalEditPart#setStructuralFeatureValue with the correct feature.
How to change the view of an existing element?
- Q: Basically I want to switch between two visual styles of one EditPart. So, I think i will add a property to the semantic model, wich indicates what style the EditPart should have and add a logic to the EditPart's class accordingly. I don't know, if this is the right approach. But it seems to work.
- A: For interested parties:
I'm creating a petrinet editor to become familiar with GMF. Transition nodes (simple rectange figures) should be able to be switched between vertical orientation and horizontal oriantation.
I added the following code to 'TransitionEditPart.java':
protected void handleNotificationEvent(Notification notification) { Object feature = notification.getFeature(); if (PetrinetPackage.eINSTANCE.getTransition_Vertical().equals(feature)) { refreshBounds(); } else super.handleNotificationEvent(notification); } protected void refreshBounds() { Dimension size = getPrimaryShapeDimension(); int x = ((Integer) getStructuralFeatureValue(NotationPackage.eINSTANCE.getLocation_X())).intValue(); int y = ((Integer) getStructuralFeatureValue(NotationPackage.eINSTANCE.getLocation_Y())).intValue(); Point loc = new Point(x, y); ((GraphicalEditPart) getParent()).setLayoutConstraint( this, getFigure(), new Rectangle(loc, size)); } protected Dimension getPrimaryShapeDimension() { Transition t = (Transition) this.resolveSemanticElement(); if (t.isVertical()) return new Dimension(40, 10); else return new Dimension(10, 40); }
Another possibility could be to register two different mappings and differentiate between them using MappingEntry.domainSpecialization constraint. An example of this approach can be found in the MindMap project used in tutorial (three different link mappings are used for the domain element Relationship).
The advantages of having two distinct elements are the following: 1. You may associate completely unrelated figures with these two elements (this may not bee needed in your scenario, although you might use figures with fixed sizes 10x40 and 40x10, respectively); 2. You might associate different creation tools with these elements (but still have one creation tool if you don't need two); 3. You might associate element initializers with these elements, so as to initialize your orientation based on the element you are creating. 4. This approach can be easily adapted to the situation when the visual aspects of an element depend on multiple features, all you need is to modify the OCL expression in the *.gmfmap.
Disadvantages are: 1. You have more code generated. This may be a problem as the number of @generated NOT's increases; 2. If the visual aspects depend solely on a single attribute of the semantic element, OCL may seem an overkill; 3. There is a known problem in the generated diagram editor that a XXXCanonicalEditPpolicy might fail to always update the ElementType on a change in the domain model that affects the element type. (this problem is not present in the lite runtime, where ANY such change is guaranteed to be processed correctly).
Having two different mappings was my very first approach. It seems to be the most logic way, having two independent visual elements, which can be associated to an element. But I just can't see how to change the visual component of an existing element (in a way different to how I mentioned before).
In fact, this should be automatic (provided that the node is canonical). The fact that it does not update is due to 150257.
How can I add a tooltip to a diagram element?
- Q: Anyone konw how to add tooltip for element on the diagram?
- A: There are no tooltip support in the gnfgraph model.
You may try to to add something like the code below to the generated <DiagramElement>EditPart.
/** * @generated NOT */ protected IFigure createFigure() { IFigure result = super.createFigure(); result.setToolTip(new Label("My diagram tooltip")); return result; }
How to enable drag-n-drop from the palette?
- Q: It seems that the only way to create nodes using the palette is by first clicking on the tool from the palette, releasing the button, then moving the mouse to the creation point on the canvas (a "+" sign is displayed with the mouse cursor) then clicking again to actually create a new node.
I have a user request for "traditional" drag&drop where you would left-click on a palette tool, move the mouse to the drop point (keeping the mouse button pressed) and release the mouse button in order to create the node.
I've found two bug reports that claim that drag&drop is available (resolved/fixed):
Can not add elements to diagram doing drag and drop from palette
Is this possible in GMF 1.0.1? Is this a behavior inherited from GEF that can't be changed?
- A: This works in the GMF Geoshapes Example, but not in the generated Taipan Example so it looks like the GMF generation capabilities does not support this yet. Take a look at PaletteToolTransferDropTargetListener to see how this is implemented in the GMF Runtime.
How can I remove the connection handles from my diagram?
- Q: I just don't know what the little tool shown in http://www.volker-wegert.de/files/attic/connector-tool.png is called... Anyway - is there a way to disable this tool for a single object or for the entire editor? I'm trying to create a VE-like dialog editor that doesn't work with connections, so I don't really need this tool...
- A: It's ConnectionHandleEditPolicy that adds these handles. You'll need to remove edit policy registered for EditPolicyRoles.CONNECTION_HANDLES_ROLE (which is added in ShapeNodeEditPart, default edit part for all generated nodes).
How can I modify what is provided in the model assistance popups?
- Q: Using the help guide, I've been able to figure out how to add tools to the palette. I haven't been able to figure out, however, how to change the behavior for when you hover over the document. Right now, one of my model objects shows up twice in the menu- I see "Add Node", "Add Link", and then "Add Node" again. I don't want to see "Add Link" at all (it's a connection), and I only want to see "Add Node" once. I started with the gmfgen file, but I need to work with and make changes directly to the generated code, so I'm trying to figure out how to modify the code/plugin.xml directly.
- A: Check subclasses of ModelingAssistantProvider.
The default behavior of the PopupBarEditPolicy installed on the diagram will get the popupbar items based on the items on the last active drawer in the palette. Put a breakpoint in DiagramPopupBarEditPolicy.fillPopupBarDescriptors() to understand what is going on.
The default behavior of the PopupBarEditPolicy installed on other editparts, is to get the list of types for the popupbar from the Modeling Assistant Service. Check out the method getTypesForPopupBar().
How can I remove model assistant popups entirely?
- Q: GMF automatically creates a palette of icons when you hover the mouse in an editor window--the palette of things that can be inserted into the current object. My boss does not like the look of it; is there any simple way to turn it off?
- A: Remove edit policy with key EditPolicyRoles.POPUPBAR_ROLE from all node and compartment edit parts. Or PopupBarEditPolicy if it's registered by other key.
You could also easily control this with a preference option if you wanted. Support for this is already in GMF. The GMF Logic Diagram Example has this in its preference pages.
How can I allow for the rearrangement of items in a compartment?
- Q: How do I manage to rearrange items in a Compartment? For instance, in the Mindmap tutorial example, it is easy to create a Thread with a bunch of Thread Items, but suppose after I create the Thread Items I want to rearrange them. Is there any way to make a (user interface) control to do that? I can't seem to figure it out.
- A: This has to do with the layout edit policy installed on your compartment edit part. Here's a configuration that works for me. The ShapeCompartmentEditPart installs an XYLayoutEditPolicy that allows you to rearrange things in your compartment.
You can ignore the last two other edit policy installed on this edit part:
public class BlockChildrenCompartmentEditPart extends ShapeCompartmentEditPart { public BlockChildrenCompartmentEditPart(View view) { super(view); } public String getCompartmentName() { return "BlockChildrenCompartment"; } public IFigure createFigure() { ResizableCompartmentFigure result = (ResizableCompartmentFigure) super .createFigure(); result.setTitleVisibility(false); return result; } protected void createDefaultEditPolicies() { super.createDefaultEditPolicies(); installEditPolicy(EditPolicyRoles.CREATION_ROLE, new CreationEditPolicy()); installEditPolicy(EditPolicyRoles.DRAG_DROP_ROLE, new DragDropEditPolicy()); installEditPolicy(EditPolicyRoles.CANONICAL_ROLE, new BlockCanonicalEditPolicy()); installEditPolicy(EditPolicyRoles.SEMANTIC_ROLE, new BlockChildrenCompartmentCreationEditPolicy()); } ... }
The edit parts contained in this compartment extend ShapeNodeEditPart.
How can I make my domain element aware of a view element's coordinates?
- Q: I have a figure (Field) in a compartment, when the user set its position, it gets x and y values in the view. So i want that the corresponding object in the model (also Field :) ) get its values for x and y from the view coordinates. Must I implement a move-listener for the figure?
- A: Do you have your own editpart for this model element? Why don't you just listen to changes to the location in the view and then update your element? Check out ShapeEditPart.handleNotificationEvent().
Here you have a snippet of my code...
This is the method from my <DomainModel-Name>.diagram.edit.parts.FieldEditPart
/** * @generated not */ protected void handleNotificationEvent(Notification arg0) { // SET was the type i need if (arg0.getEventType() == Notification.SET) { // the notifier sends his new Bounds ... if (arg0.getNotifier() instanceof BoundsImpl) { BoundsImpl notifier = (BoundsImpl) arg0.getNotifier(); // for my special coordinate mapping i also need the node, // so i save it in this variable ... NodeImpl node = (NodeImpl) this.getModel(); // get the corresponding FieldLabel Object from the model FieldLabel model = (FieldLabel) node.getElement(); if (arg0.getFeature() instanceof EAttributeImpl) { // Get the attribute that has changed EAttributeImpl attribute = (EAttributeImpl) arg0.getFeature(); // set the values for x and y in the model if (attribute.getName().equals("x")) { model.setX(notifier.getX()); } else if (attribute.getName().equals("y")) { model.setY(notifier.getY()); } } } } }
So everytime the bounds change the information is stored in the model. If the user moves the FieldFigure or if the values are changed in the editor doesn't matter.
How to make copy/paste work on compartments?
- Q: I've managed to get pasting into compartments to work. The main issue I had was that copy & paste worked just with the top level diagram.
- A: In summary, the gmf copy & paste implementation can be easily modified to work with compartments but for some reason it doesn't allow it.
Hope this helps other folks.
The following in the NotationClipboardOperationHelper class have to be overridden (fork the class because some methods are private):
static EObject getSemanticPasteTarget(View view) { Diagram diagram = getContainingDiagram(view); if (diagram != null) { return diagram.getElement(); } return null; }
should become smth like
static EObject getSemanticPasteTarget(View view) { View parent = (View) view.eContainer(); return parent.getElement(); }
private boolean shouldAllowPaste( PasteChildOperation overriddenChildPasteOperation) { EObject eObject = overriddenChildPasteOperation.getEObject(); EObject parentEObject = overriddenChildPasteOperation .getParentEObject(); if ((parentEObject instanceof Diagram) && (eObject instanceof View)) { .... }
should be modified to allow pasting into Nodes, too.
How to create two unsynchronized diagrams for one domain model instance?
- Q: I have created a model and a diagram editors in GMF, let's say MyEditor. MyEditor works well with one diagram per model. But when I initialize a second diagram from the same model and delete or add something there, it gets reflected in the first diagram and also in the model itself. Is it possible to create two diagrams of the same type for one model and have instances in the model and only references in the diagrams, so that when I delete a node in one diagram, it stays both in the model and the other diagram? I want the model to be union of all diagrams.
Said in simple words I want something like the repository-based UML tools - have one repository and many class diagrams to it. The repository is the union of all diagrams.
Is there a native support in GMF for this, or I should create my own implementation? If so, can you advise me where to start from?
- A: Try making your diagram non-synchronized (see: Synchronized).
How can I position a label at the end of a link?
- Q: I want to add a Label at the end of a (decorated) connection which should represent the target (source) cardinality of the connection. What could i add to my PolyLine Connection in my .gmfgraph file?
One thing i tried was a BorderLayout as child from the Connection and a FigureRef also as child. Then the FigureRef gets the BorderLayoutData (END). But this didn't work out. Is there a build in possibility to solve this? Or must i implement an own Layout?
- A: In gmfgraph model add AlignmentFacet to the DiagramLabel. In this facet you may select appropriate label alignment relative to the link.
Use Label Offset Facet to adjust the position.
How can I constrain node movement/resize?
- Q: What is the GMF way of constraining how/where can the user move(drag) / resize Figures (editParts) ?
For example, I want to allow moving/resizing them, but I want to prevent figures to overlap. (e.g. in GEF, what I did was to create a SetConstraintCommand, and check my constraints in canExecute())
How do I achieve something similar in GMF ?
- A: You could specify resize constraint in gmfgraph model for the node but this particular case is different; I'd suggest you to try 'veto approach': add edit policy that contributes command in cases when SetConstraintCommand is returned. In this command check that nodes overlap with the new bounds; if it's so return 'false' from canExecute().
If you are that pretty strict about layout constraint maybe it would be better to hide it from the properties view? And there is one more way to change it - modify xml with notation model externally and reopen the diagram.


text:
|Biosequences .. Software .. Molbio soft .. Network News .. FTP
In article <41e9a2e5a2b70e530cd23abb2e960d8f at anon.xg.nu>, No User <no.user at anon.xg.nu> wrote: > Shimadzu Windows© Direct Feature Wins > Outstanding New Product Award > > Shimadzu Scientific Instruments has announced that the Windows® > Direct feature has been recognized by the International Society of > Weighing and Measurement (ISWM) as the most outstanding new > product on display at the 2000 ISWM Equipment Exposition held in > Las Vegas. Windows Direct enables the displayed weight value to be > transmitted from any Shimadzu analytical or top loading balance > directly to any Windows application. The purpose of this award is > to recognize a company or individual for the most outstanding new > technical achievement that positively impacts the weighing and measurement > industry. The award is represented by the Kardux Cup, a perpetual > trophy which is engraved with the year, the name of the company and > the product name. Shimadzu will have possession of the cup for display > until the next ISWM Equipment Exposition in 2002. > > Windows Direct for Shimadzu Balances allows the user to leverage the > capabilities of any Windows based software. Once configured the > displayed weight is transmitted directly to the PC just as if it > were entered via the keyboard. No additional software is required. > Windows Direct also enables the addition of the statistical, > analytical, reporting, and archiving capability to Shimadzus new line of > analytical and top loading balances. > > The Shimadzu Corporation has produced balances for industry and research > since 1918. The company is responsible for many innovations which have > improved balance performance including temperature-based full automatic > calibration in 1985; the first one-piece force cell in 1989; a high > sensitivity micro balance in 1993 and now the unique Windows Direct feature. > > --- > This message did not originate from the Sender address above. > It was posted with the use of anonymizing software at > http://anon.xg.nu > --- > > Sent via Deja.com http://www.deja.com/ Before you buy.

subset: commoncrawl


text:
Entry & Exit Formalities
Entering or leaving the UK is usually straightforward and hassle-free, save for the occasional inconvenience of long queues at passport control and security.
A referendum result in the UK in June 2016 that favoured withdrawal from the EU renders information in this section highly liable to change; it's important to check the current regulations before travel.
Customs Regulations
Britain has a two-tier customs system: one for goods bought duty-free outside the EU; the other for goods bought in another EU country where tax and duty is paid. The UK's 2016 decision to leave the EU (widely known as 'Brexit') may eventually lead to a change in these arrangements.
Following is a summary of the current rules; for more details go to www.gov.uk and search for 'Bringing goods into the UK'.
Duty-free The duty-free limit for goods from outside the EU includes 200 cigarettes or equivalent in cigars, 4L of wine, 1L of spirits and other goods worth up to £390.
Tax and duty paid There is no limit on goods from within the EU (if taxes have been paid), but customs officials use the following guidelines to distinguish personal use from commercial imports: 800 cigarettes, 200 cigars, 10L of spirits, 90L of wine and 110L of beer. Still enough to have one hell of a party.
Generally not needed for stays of up to six months. Not a member of the Schengen Zone.
Further Information
- If you're a citizen of the European Economic Area (EEA) nations or Switzerland, you don't need a visa to enter or work in the UK – you can enter using your national identity card.
- Visa regulations are always subject to change, and immigration restriction is big news in the UK, so it's essential to check with your local British embassy, high commission or consulate before leaving home.
- At the time of research, if you're a citizen of Australia, Canada, New Zealand, Japan, Israel, the USA and several other countries, you can stay for up to six months (no visa required), but are not allowed to work.
- Nationals of many countries, including South Africa, will need to obtain a visa: for more info, see www.gov.uk/check-uk-visa.
- The Youth Mobility Scheme (www.gov.uk/tier-5-youth-mobility), for Australian, Canadian, Japanese, Hong Kong, Monégasque, New Zealand, South Korean and Taiwanese citizens aged 18 to 30, allows working visits of up to two years, but must be applied for in advance.
- Commonwealth citizens with a UK-born parent may be eligible for a Certificate of Entitlement to the Right of Abode, which entitles them to live and work in the UK.
- Commonwealth citizens with a UK-born grandparent may qualify for a UK Ancestry Employment Certificate, allowing them to work full time for up to five years in the UK.
- British immigration authorities have always been tough; dress neatly and carry proof that you have sufficient funds with which to support yourself. A credit card and/or an onward ticket will help.


text:
Slice of life: Leonard sets the table
Most people maintain romantic notions about the lives of artists and writers. But the truth is we all have to make a living. That guy and gal who sell you cabernet and beer at the Market Street Wineshop? He's an accomplished poet, and she's a brilliant actor. The woman who manages the dairy case at C'ville Market? She paints jaw-dropping still lifes in the manner of Renaissance artists.
In the case of the latter, Davette Leonard may keep you in yogurt and cheese by day, but her true passion lies in using oils and glazes on masonite to realistically depict small tabletop scenes, often involving fruit. Twelve of Leonard's paintings, plus a portrait and a still life in egg tempera, are currently on view at the McGuffey Art Center.
Although her compositions involve fewer elements than those of the 16th century Dutch masters who inspire her work, Leonard uses a similarly rich palette with careful attention paid to light. She arranges her objects on a simple cream-colored tablecloth–- sometimes creased, sometimes folded–- against monochromatic backgrounds.
Leonard replicates the Renaissance tradition of "vanitas" paintings, which visually lecture against worldly desire by alluding to the impermanence of life and material wealth. But rather than paint a skull amid wilting flowers and accoutrements spilling off a table, as earlier painters were wont to do, Leonard takes a subtler approach. Her sliced fruits are alluringly juicy but also show the first signs of decay in the darkened edges of their peels and slight browning of their flesh. Leonard often includes desiccated leaves, shells, and twigs to punctuate these tableaux.
Using colors that are true-to-life and luscious, Leonard keeps evidence of her brushwork to a minimum. Her objects' edges, though not diffuse, have a softness that seductively pulls viewers into each painting, where meticulously observed details create small dramatic moments.
In "Clementine," a dried-out leaf curls in front of an unpeeled fruit, the arc of the leaf's central vein echoing the pulpy lines on the backs of nearby citrus slices. Elsewhere, Leonard's interpretation of vanitas turns toward sensual aspects of desire. In "Tangerine," the interior of a cut-open, tempting fruit whisperingly recalls female genitalia. The suggestion is quiet, yet a central crease in the tablecloth leads the viewer's eye to it.
Luminous and exquisite, each precisely observed painting invites contemplation. If only Leonard could quit her day job, but, alas, still life isn't real life.
Davette Leonard's exhibition is on view through February 28 in the downstairs hall gallery of the McGuffey Art Center. 201 Second St. NW. 295-7973.


text:
WARNING: This is a rant
I don't usually write stuff like this… personal stuff… you know…
But this assertion has been going round my head for a few years now.
You could call this blog post: "From Parkinson to Kyle in a few easy steps".
So, excuse me for a minute, or if you want to know why Terry Wogan killed the chat show, read on.
In the '70s
In the '70s, as far as I can recall, chats shows were populated by interesting people… intelligent people. They used to come on to these shows because they genuinely has something to say. They gave a little of themselves to the viewer, providing an insight into their lives, their beliefs; we understood them as people, not celebrities.
It used to be a little like this.
(Longer version here: http://www.youtube.com/watch?v=JkUyDr97NU4)
For me, that's a real chat show.
In comes Wogan
Unfortunately, in 1985, Wogan's chat show was moved from its Saturday night slot to a thrice-weekly weekday evening slot. And that was the beginning of the end. Now, I've nothing personal against Terry Wogan, let me make that clear, but there is a reason that he was voted the UK's most popular and least popular man in 1992.
When the show was on three times a week, apart from boring children like me stupid, it also created a lot of space that needed to be filled. You could no longer select from the finest guests, mixing and matching them for the best result and taking time to prepare thoughtful and illuminating questions; you just had to take whoever you could get to fill the time.
So in came the fillers, the celebrity endorsements, the non-entities with nothing to say, and at worst, the embarrassments. These were people who knew that they had the upper hand. The time needed to be filled and they would fill it, for a price.
Most of these people will be forgotten now, but a few still linger in the memory.
These were embarrassing, but worse was the ones we don't remember. The guests that should never have been there in the first place.
Out goes Wogan, in comes worse
Eventually Wogan was canned – the show, not the man – but that wasn't the end of the story. The floodgates had now opened, now anyone could be a guest, regardless of talent or intelligence or a modicum of self-respect. And there was always the endless flow of celebrity endorsements – thinly veiled adverts that purported to be interviews. Most of the time they could have just shown a picture of the book or the trailer for the film.
The worst of these was the cringe-worthy interview with Sylvester Stallone, Bruce Willis and Arnold Schwarzenegger during the opening of the first Planet Hollywood in London, the three of them parading around in endorsed baseball caps and jackets. We learnt nothing about them except for their restaurant and the titles of their next movies. Michael Aspel was the unfortunate 'interviewer'. Feel the cringe at 4 minutes and 15 seconds, as Don Johnson and Melanie Griffiths get involved.
And further down…
Finally we reach rock bottom. Jeremy Kyle – the UK's answer to Jerry Springer.
I'm speechless, witness the spectacle that is 'Mad Dog Deon' and his 'talent': a skull face tattoo.
Or, to make you proud to be human, Charlotte and her measured reaction to being accused of cheating on her partner.
It's mind-boggling. It's almost unbelievable.
How far we've come, and how far we've delved into the gunky morass that is the general public. There's nothing to aspire to here, only a sense of schadenfreude and ill-judged superiority. Maybe there is an argument for the 'dumbing down' of TV. If so, it only makes it more important that we strive to save channels like BBC Four that offer an alternative to this guff. Because, in the end, that's exactly what it is.
Thanks Terry.


text:
Do Not Despair
Late in 2012, our town interrupted the Solidarity Singers to confront some very big things.
The Clean Lakes Alliance announced a new campaign to fix the lakes, aided by the leadership of wonderfully impatient newcomer Dave Lumley. He has goaded Madison to take real action to save our waters rather than do what we have done the last fifty years: meticulously study their fragrant death by phosphorous, manure and weeds.
On another front, the Urban League of Greater Madison and their CEO Kaleem Caire staged a thought-provoking seminar with national education reform leaders Geoffrey Canada and John Legend. Canada and Legend argued eloquently for innovation, change and common sense to combat Madison's appalling racial achievement gap. The ideas were powerful enough to send assemblyman Brett Hulsey scurrying away shortly after the presentation began, lest listening to new ideas regarding social justice from respected black leaders would upset the teachers' union. It would seem to further prove that, though some of Madison's white progressives are indeed white, they are no longer progressive.
At another gathering, developer Bob Dunn, before a thrilled and relieved crowd of locals, explained how it came to be that Madison could finally move forward with a big idea for a big hotel on our biggest lake. These people, with big visions and plans, came as a welcome contrast to our two-year solidarity serenade. Sure, our government friends and neighbors had something to sing about, but every song gets old after twenty-four months of continuous play. Public union members are a large segment of Madison's population, but they are not the only residents in town, and their concerns are not the only item on
our agenda.
Dunn's Edgewater gathering was especially exciting. The mood was exultant. Folks of every political stripe were giddy with the notion that someone, other than the university, could actually construct a beautiful, large building worthy of our city and its lakes.
As it turns out, the heroes were the couple who built our last beautiful building.
Dunn was unusually subdued as he shared a poignant anecdote on how the Edgewater dream finally came true.
On the eve of the hotel's rebirth, Dunn was a defeated man. After a lengthy, nightmarish process of municipal approvals, meetings and pettiness, the project was voted down. Dunn told how he left the final vote after 2 a.m. and drove straight through the night to his northwoods escape near Manitowish.
At 8:30 that morning he received a call from Pleasant Rowland. According to Dunn, she offered three words: "Do not despair."
With Pleasant and Jerry Frautschi's help, the Edgewater financing came through. Now Madison will have a destination hotel that befits a revitalized State Street and one of the world's great universities and most livable cities.
These three meetings were cause for even the worst cynic to take heart.
After two years of community focus on the contracts of government workers, the private sector—and the dreaded One Percent—stood up and declared that it was time to move forward on projects that benefit all of us.
Lumley, head honcho at Spectrum Brands, has offered vision and resources to create urgency for government agencies that simply haven't done what is needed for our lakes.
Caire and the Urban League are forcing Madison to confront our true values in the face of a more diverse population of citizens and the challenges they face and represent.
And Pleasant Rowland and Jerry Frautschi are unafraid to help Madison dream big.
The political rancor in Madison over the last two years has been a sad thing. Along with the economy, it created a feeling of anger and hopelessness in a city that is usually pretty joyous and goofy.
We have spent a lot of time listening to the folks who perform the everyday tasks of government.
We understand their importance.
But there is more to life than assuring process is followed.
Sometimes we need to dream big.
Lest we despair.
Madison-based television producer John Roach writes this column monthly. Reach him at email@example.com.
Find more of John Roach's columns .


text:
ATTN: MEMBERS - To view member pricing, you must log in. If you still experience difficulties, please simply click here to submit a form to get help.
We'll notify you via email when you can make your online purchase.
~ ~ ~
This program is designed to offer homeschool students an opportunity to spend an afternoon together participating in a scientific lab, a demonstration and exploring the exhibits. Be sure to make your reservations early because these popular programs fill up quickly!
Special Notes:
All children must be accompanied by a registered adult.
*Please note day of the week change from previous years schedule*
All course registrations close the week before the Wednesday event at 10:00 AM.
Students will be divided into appropriate groupings, based on age, provided at time of pre-registration.
Afternoon Science is by online pre-registration only. There are no Walk-ins on the day of the event.
The doors open 1:00 p.m. on each Afternoon Science date. Programming will start as early as 2 p.m. Programs will not be delayed for late arrivals. Always give yourself the full 3 hours.
Programs are subject to cancellation or change at Science Central s discretion.


text:
Last Friday, after dropping my son off at his preschool in Flourtown, I returned to Chestnut Hill via Bethlehem Pike, figuring there was no way I'd have any problems getting to work on a major roadway.
As I turned into Chestnut Hill from the intersection of Bethlehem Pike and Stenton Avenue, I was confronted by a turnpike that had been transformed by last week's snowstorm into a ski slope.
The roadway was still under at least 6 inches of snow – a compact amount that had been pressed down by other travelers in an uneven topography of ice mounds and snow swales. No plow or snow truck had seen this stretch of road yet, more than 24 hours after the snows of Wednesday and Thursday had concluded.
I didn't have a problem getting up the hill – I drive a Subaru, the world's greatest snow car – but a lot of other people were having problems. Two other drivers were stuck at the bottom of the hill. Several others were slowly coming down the hill at 5 mph, hoping not to slide through the red light at the intersection of Chestnut Hill Avenue or into another car.
What's the problem? Why can't Philadelphia clear even its most frequently traveled roads? Springfield Township by Thursday afternoon didn't have an ounce of ice on its roads. What did they do right that Philadelphia can't seem to get right?
On Thursday, Mayor Michael Nutter spoke to the online publication governing.com about the city's snow removal strategy. According to Nutter, 700 city employees use 500 city vehicles to clear (or try to clear) the city's 3,000 miles of street.
"Basically … if you've got a truck and we can put a plow on it, you're going to be doing snow duty – that's kind of our motto," Nutter told governing.com. "Our folks are snow fighters. This is what they do. They take it as a point of personal pride."
By the looks of things around Chestnut Hill and from what I've heard from people in other communities – Mt. Airy and Germantown – snow removal off of Germanton Avenue practically didn't even happen. West Mount Airy Executive Director Lizabeth Macoretta sent a letter to Councilwoman Donna Reed Miller's office to address her organization's concern over the lack of good snow removal in West Mt. Airy (see letter below).
Since I've lived in Philadelphia and then in its near suburbs – moved here in 1997 – I've never seen the city do a very good job with the snow. To Nutter's credit, I don't think any administration has done a better job than his. I'm not sure any city administration is up to the task of clearing the city's roads.
Perhaps it's time for a little creative thinking. Or forget creative. I'd settle for some new thinking.
It's pretty clear to me that a central agency – Philadelphia city government – can't do the best job clearing neighborhood streets. We need some decentralization, contracts with local, private operators who will be responsible for snow removal services for a particular section of the city or neighborhood. City administrators can judge the effectiveness of these contractors and fire them if they don't get the job done.
The point is this: Philadelphia could use a different approach to snow removal for its streets. It needs an approach that works.
Pete Mazzaccaro


text:
Looking for the Ancien Régime
Paris in the Age of Absolutism
French Absolutism: The Crucial Phase 1620-1629
L'Ancien Régime Vol. 1, La Société
At the beginning of the present century historians could speak of making a contribution to knowledge in a sense that is no longer possible. At that time, when academic history, if not in its infancy, was still, by present standards, only adolescent, the mere accumulation of facts could seem a virtue, provided the facts were set out in an orderly way. This is no longer true. As more and more researchers get to work, and more and more fields of research are brought under cultivation, teachers, not to mention students, of history are in constant danger of being overwhelmed by the facts. The need is for explanations that will give the facts a meaning.
Explanations involve arranging the facts within a framework of a coherent argument and in relation to some general principles. As historians increasingly see the relevance to their subject of other disciplines, such as sociology, economics, and statistics, so that not only more, but more diverse kinds of facts are accumulated, the task of explaining becomes both more urgent and more difficult. Among other things it involves redrawing the lines of divisions between periods, since the conventional divisions seem arbitrary in the light of new facts and new insights; particularly it involves rethinking the familiar concepts, such as feudalism, absolutism, and the Ancien Régime, which have commonly formed the basis of the divisions, and in the past were often used without due reflection.
All such "isms" (and in effect the term Ancien Régime is merely an "ism" like the others) were invented for the sake of convenience, usually after the phenomena they described had ceased to exist. The word "feudalism," Marc Bloch tells us in his introduction to La Société Féodale, is derived from the famous decree of the 11th August 1789, which declared that "the National Assembly totally abolishes the feudal regime." The word "absolutism" was invented at the beginning of the nineteenth century; the phrase "Ancien Régime," as Professor Goubert emphasizes in his work here under review, was first used in 1790. Significantly, perhaps, these terms were to start with terms of abuse. In the course of time, however, they have come to mean different things to different people and in different countries. We continue to use them because we cannot avoid doing so, but we change their meanings to suit our preoccupations.
Since preoccupations are different on the different sides of the iron curtain, the meanings given to words are different too. Feudalism in the communist countries still means what it meant to the French peasants in 1789, who called it "le temps des seigneurs," though this is far from what it meant to Marc Bloch when he wrote his classic work on feudal society. Absolutism in the west means a particular form of autocracy; in the communist countries (where it stands, like the term Ancien Régime in western terminology, for a whole way of life), it means a particular set of social and economic relations of which a particular form of autocracy is…
This is exclusive content for subscribers only.
Get unlimited access to The New York Review for just $1 an issue!
Continue reading this article, and thousands more from our archive, for the low introductory rate of just $1 an issue. Choose a Print, Digital, or All Access subscription.
If you are already a subscriber, please be sure you are logged in to your nybooks.com account.


text:
Substances not yet added to list of contaminants the city must report
The annual water quality report Chicago recently mailed to residents did not address the pharmaceutical drugs and sex hormones that were discovered in drinking water.
The city is required to alert Chicagoans if the drinking water contains regulated contaminants such as lead, pesticides and harmful bacteria, but pharmaceutical chemicals have not been added to the list.
Tests on treated Lake Michigan water in 2008 revealed small amounts of testosterone and progesterone, a prescription cholesterol-fighting drug (gemfibrozil), ibuprofen, and DEET.
Regulators and researchers are concerned about the effects of long-term exposure to such substances.
"We're just scratching the surface with what's been detected to date," Dana Kolpin, a researcher at the U.S. Geological Survey, told the Chicago Tribune. "And we don't have a clue about what these mixtures can do."


text:
We've just had a couple of days where the wind has howled and blown so hard our house shook like we were in an earthquake!! Friday night I kept waking up as huge gusts would shake and rattle our place. Things literally got "blown away". Hubby went for his walk in Fish Creek Park and trees were toppled over the trails. Today is calm.
Sunday, May 31, 2009
Huff & Puff & Blow Your House Down
We've just had a couple of days where the wind has howled and blown so hard our house shook like we were in an earthquake!! Friday night I kept waking up as huge gusts would shake and rattle our place. Things literally got "blown away". Hubby went for his walk in Fish Creek Park and trees were toppled over the trails. Today is calm.
Posted by Faye at 9:43 AM 2 comments
Friday, May 29, 2009
A Very Unexpected Result....
.....to my Google search.I was directed to Tacoma Daily Index.com and I guess because of our last name and David having worked for the Abbotsford News, where his Obituary appeared in, it took me here. Now, I don't believe in coincidences, but this is almost "spooky". However, I would have dissolved in a puddle not many months ago, but this article, though a shock to unexpecticly come across, was strangely comforting....almost like David reached out to say "hi" :)Just look at that big smile!
WILLEBOORDSE, David George Saturday, 30 Sep 2006 Abbotsford News
Abbotsford, BC David George
Aug. 13, 1981 - Sept. 30, 2006
On August 13, 1981 a third son was born to Faye and George Willeboordse. David George Willeboordse arrived – a huge gift to his family – he weighed 9lbs – 13ozs. On September 30, 2006 David's life was cut short by a tragic accident in Langley, B.C.
David was born in Williams Lake, B.C. Shortly thereafter his family moved to Salmon Arm and lived in various places in B.C. Including Merritt, Surrey and Abbotsford as he was growing up. The last 13 years he was a resident of Abbotsford, B.C. In the last two months of his life, David began a new job in Ft. St. John, B.C and was staying there with his family while in the process of moving and beginning a new life there with his wife.
In the fall of 2002 David met a beautiful young lady, Karen Gurney and she fast became the love of his life. They were married on May 14, 2005. David and Karen were excited about a new beginning in Ft. St. John living closer to David's family.
Even at an early age "happiness" and "comedian" were words that defined David. Laughter followed him wherever he went. He liked nothing better than a good joke or a playful tease to those he knew and loved. Everyone loved David. He was a loving husband, son and brother, a great friend and a 'favorite' uncle. Growing through his teenage and young adult life, David developed Godly character which was displayed in his loyalty and love to those around him. He is known for his caring ways, his soft shoulder and his incredible ability to bring encouragement to those who needed it. David loved God with his whole life. He appreciated all that God made and was especially enthralled with the beauty of God's creation.
David's passion was people and his heart went out to those who were less fortunate than himself. One of the many highlights of his life was the opportunity to meet the King of Ghana, Africa, and then participate in a missions trip to his country. He would have loved to share in many more 'mission' experiences.
David is survived by his wife, Karen; his parents, Faye and George Willeboordse of Fort. St. John; his brothers, Kevin (Jodie) of Fort. St. John and Colin of Abbotsford; his grandparents, Sid and Joanne Miedema of Fort. St. John and Leunis and Julie Willeboordse of Abbotsford; his nephew and niece, Tyson and Kaylie. David will be greatly missed by numerous aunts, uncles cousins and friends.
Memorial service for David will be held at Heritage Alliance Church, 3440 Mt. Lehman Road, Abbotsford on Friday, October 6, 2006 at 2:00 p.m.
Posted by Faye at 2:53 PM 2 comments
Thursday, May 28, 2009
This & That
The past couple of days have brought spring rain. That rain, followed by today's sunshine, has caused the grass to be greener, the flowers to turn their faces to the sun and "smile". It also clears away the "funk" I've been in.
We're taking off to have lunch with my parents too. We have a new baby girl in the family...my nephew and his wife have a baby girl named Kylie and my parents can't wait to see the pictures :) They live in Ontario, and Mom wishes she could go snuggle their wee great-grand. For now, pictures will have to do :)
Meet: Kylie McKenna - 6lbs.10oz.
Posted by Faye at 10:26 AM 2 comments
Wednesday, May 27, 2009
Life is a Gift
This is something we should all read at least once a week
1. Life isn't fair, but it's still good.
2. When in doubt, just take the next small step.
3. Life is too short to waste time hating anyone...
4. Your job won't take care of you when you are sick. Your friends and parents will. Stay in touch
5. Pay off your credit cards every month.
6. You don't have to win every argument. Agree to disagree.
7. Cry with someone. It's more healing than crying alone.
8. It's OK to get angry with God. He can take it.
9. Save for retirement starting with your first paycheck.
10. When it comes to chocolate, resistance is futile.
11. Make peace with your past so it won't screw up the present.
12. It's OK to let your children see you cry.
13. Don't compare your life to others. You have no idea what their journey is all about.
14. If a relationship has to be a secret,you shouldn't be in it.
15. Everything can change in the blink of an eye. But don't worry; God never blinks.
16. Take a deep breath. It calms the mind.
17. Get rid of anything that isn't useful,beautiful or joyful.
18. Whatever doesn't kill you really does make you stronger.
19.. It's never too late to have a happy childhood. But the second one is up to you and no one else.
20. When it comes to going after what you love in life, don't take no for an answer.
21. Burn the candles, use the nice sheets, wear the fancy lingerie. Don't save it for a special occasion. Today is special.
22. Over prepare, then go with the flow.
23. Be eccentric now. Don't wait for old age to wear purple.
24. The most important sex organ is the brain.
25. No one is in charge of your happiness but you.
26. Frame every so-called disaster with these words'In five years, will this matter?'
27. Always choose life.
28. Forgive everyone everything.
29. What other people think of you is none of your business.
30. Time heals almost everything. Give time time.
31. However good or bad a situation is, it will change.
32. Don't take yourself so seriously. No one else does.
33. Believe in miracles.
34. God loves you because of who God is, not because of anything you did or didn't do.
35. Don't audit life. Show up and make the most of it now.
36. Growing old beats the alternative -- dying young.
37. Your children get only one childhood.
38. All that truly matters in the end is that you loved.
39. Get outside every day. Miracles are waiting everywhere.
40. If we all threw our problems in a pile and saw everyone else's,we'd grab ours back.
41. Envy is a waste of time. You already have all you need.
42. The best is yet to come.
43. No matter how you feel, get up, dress up and show up.
44. Yield.
45. Life isn't tied with a bow, but it's still a gift."
Posted by Faye at 11:34 PM 1 comments
Sunday, May 24, 2009
It's Bloomin' Weather
(click on Collage to enlarge)
I thought I'd just post this Collage to show you the lovely planters I just did this weekend. We also planted a couple shrubs and Hubby finished off the ground underneath the bird feeder with broken brick and then laid some topsoil and seed around the garbage bin slabs. I added the two rectangular planters just to finish off the look. We finished this all off this aft and now it's nicely raining. A job well done :)
Posted by Faye at 3:08 PM 3 comments
Friday, May 22, 2009
Nice Weather
It looks like Mother Nature has gotten all the snow out of her system and now we're into lovely sunny, warmer days. It's supposed to be up to 16c, but it feels far warmer in the sun. Hubby has spent time mowing the lawn and doing some clean-up that he hadn't gotten to yet.
So, it's the Memorial Day long weekend for all my American frinds. I have a sister who lives in Washington State and she keeps me up on the different holiday weekends. I'm wishing everyone a wonderful, safe, hot weekend!
Posted by Faye at 2:28 PM 0 comments
Thursday, May 21, 2009
Before and After
Remember the post I wrote, "A Tale about..."? Well, here is Wee Black Car after the surgury to fix her nose, teeth and ribs. Doesn't she look so pretty now?? :)
Posted by Faye at 10:13 AM 2 comments
Wednesday, May 20, 2009
Wordless Wednesday
Posted by Faye at 1:34 PM 1 comments
Tuesday, May 19, 2009
Lovely Blog Award
I have been awarded this wonderful, lovely blog award from Frugal Southern Mom
Thank you so much! I am very honored as this is my first award!
Here are the rules:
1) Accept the award, post it on your blog together with the name of the person who has granted the award, and his or her blog link.
2) Pass the award to other blogs that you've newly discovered. Remember to contact the bloggers to let them know they have been chosen for this award.
I will be passing this award to:
Back Seat Bikermomma
Pretty Sandy Feet
Studio D
In His Hands
Posted by Faye at 3:44 PM 2 comments
Monday, May 18, 2009
The Man in a Boy's Body
The average age of the military man is 19 years. He is a short haired, tight-muscled kid who, under normal circumstances is considered by society as half man, half boy. Not yet dry behind the ears, not old enough to buy a beer, but old enough to die for his country. He never really cared much for work and he would rather wax his own car than wash his father's, but he has never collected unemployment either.
He's a recent High School graduate; he was probably an average student , pursued some form of sport activities, drives a ten year old jalopy, and has a steady girlfriend that either broke up with him when he left, or swears to be waiting when he returns from half a world away. He listens to rock and roll or hip-hop or rap or jazz or swing and a 155mm howitzer..
He is 10 or 15 pounds lighter now than when he was at home because he is working or fighting from before dawn to well after dusk. He has trouble spelling, thus letter writing is a pain for him, but he can field strip a rifle in 30 seconds and reassemble it in less time in the dark.
He can recite to you the nomenclature of a machine gun or grenade launcher and use either one effectively if he must.
He digs foxholes and latrines and can apply first aid like a professional..
He can march until he is told to stop, or stop until he is told to march.
He obeys orders instantly and without hesitation, but he is not without spirit or individual dignity. He is self-sufficient.
He has two sets of fatigues: he washes one and wears the other. He keeps his canteens full and his feet dry. He sometimes forgets to brush his teeth, but never to clean his rifle. He can cook his own meals, mend his own clothes, and fix his own hurts.
If you're thirsty, he'll share his water with you; if you are hungry, his food. He'll even split his ammunition with you in the midst of battle when you run low. He has learned to use his hands like weapons and weapons like they were his hands. He can save your life - or take it, because that is his job. He will often do twice the work of a civilian, draw half the pay, and still find ironic humor in it all. He has seen more suffering and death than he should have in his short lifetime.
He has wept in public and in private, for friends who have fallen in combat and is unashamed. He feels every note of the National Anthem vibrate through his body while at rigid attention, while tempering the burning desire to 'square-away ' those
around him who haven't bothered to stand, remove their hat, or even stop talking. In an odd twist, day in and day out, far from home , he defends their right to be disrespectful..
Just as did his Father, Grandfather, and Great- grandfather, he is paying the price for our freedom. Beardless or not, he is not a boy.
He is the CANADIAN Fighting Man that has kept this country free for over 200 years.
He has asked nothing in return, except our friendship and understanding. Remember him, always, for he has earned our
respect and admiration with his blood.
And now we even have women over there in danger, doing their part in this tradition of going to War when our nation calls us to do so. As you go to bed tonight, remember this shot....A short lull, a little shade and a picture of loved ones in their helmets.
'Lord, hold our troops in your loving hands.
Protect them as they protect us.
Bless them and their families for the selfless acts they perform for us in our time of need. Amen.'
When you receive this, please stop for a moment and say a prayer for our troops in Afghanistan , sailors on ships, and airmen in the air, and for those in Iraq , Afghanistan and all foreign countries.
Of all the gifts you could give a CANADIAN Airman, Soldier,
Coastguardsman, Marine,
or Sailor, prayer is the very best one.
Posted by Faye at 6:13 PM 1 comments
Still Freezing
Look at this big Icicle hanging from the eves-trough!! This was taken at 1:30pm, so you can imagine why it's still hanging there and hasn't dripped away...yup, it's freezing out there!! More snow predicted. All those fragile new leaves and blooms are suffering.
Posted by Faye at 2:32 PM 2 comments
Sunday, May 17, 2009
You know you're a Redneck when....
Posted by Faye at 9:47 AM 3 comments
Thursday, May 14, 2009
Wind, snow,hail...
I'm confused...is it spring, summer, fall or winter? It rained, snowed, hailed...all of it blew in on a cold wind. Oh....and now the sun is shining!!
Posted by Faye at 7:39 PM 0 comments
Wednesday, May 13, 2009
Wordless Wednesday
Our Sister-in-Law owns a Carpet Cleaning business and we had her come over to clean the carpet and furniture.....a nice Spring fresh-up :)
Posted by Faye at 2:31 PM 2 comments
Tuesday, May 12, 2009
Such a Helpful Son
Here my oldest son is, dragging the old truck canopy and the garbage that accumulated beside the shed and loading it onto his utility trailer, to take that along with his old shed, to the dump. Thanks Son....you are amazing :)
Posted by Faye at 1:33 PM 1 comments
Thought I'd just share this wicked surprise that came howling in with the wind last night and is still blowing in. Not a funny Spring surprise at all!! There are just some surprises I can live without and this is one of them...up there is the same category as a root canal :P
Posted by Faye at 10:11 AM 2 comments
Saturday, May 9, 2009
It's here!! The weekend that set apart exclusively for Mothers. Tomorrow is officially M-Day, but I know that so many families take this weekend to plant flowers and just enjoy activities celebrating Mom.I wish all you Mothers out there a very special weekend :)
Posted by Faye at 12:04 PM 2 comments
Friday, May 8, 2009
The Shed Arrives
What an exciting day for Hubby. Finally his shed arrives and he can organize to his heart's content :)I admit, it'll be nice to have easier access to things.
Posted by Faye at 1:43 PM 1 comments


text:
Blog Archives
Palazzos With Heels
Palazzos With Heels by encinomom featuring a leather purse
Cropped Palazzos With Faux Wrap Top With Neutrals
Cropped Palazzos With Faux Wrap Top by encinomom featuring beach sandals
Cropped Palazzos Paired With Faux Wrap Top, Accessories Add Pizazz
Cropped Palazzos With Faux Wrap Top by encinomom featuring john lewis
10 Picks To Pack
These are the shapes to look for when you build your own travel wardrobe. This guide is designed to give the maximum amount of style and versatility with the fewest number of items to slow you down. The key to making this wardrobe work will be your accessories! That's another post (and possibly an additional piece of luggage). Notice that the black top is fitted while the cropped pant has a super wide swingy flair. This is super flattering and works well with both the black cardigan/jacket or the large linen shirt worn as a jacket. It also looks great on its own. Both the faux wrap top and the white tank look great with jeans and can work on their own or with the added top layer. If you have enough room to pack the hanky hemmed vee neck pink tee (I did) you'll notice it will work as a swimsuit cover up with your flip flops, rock any of the bottoms here and can even create the illusion of a skirt when worn over the basic black dress.
The Bicycle bag pictured here has the same print as the one I purchased for this article, but it's a completely different style. My pick has a zippered top, reinforced bottom, straps, handles and even some interior detailing. The bag pictured here is great to pack along for taking to the pool, beach, outdoor market, etc. and may come in handy if your souvenirs don't fit in your main bag on the way home.
10 Picks To Pack by encinomom featuring boyfriend jeans


text:
Another one.
Two of us were working at the client's site on the software for what was essentially a compact static robot that was responsible for moving small items from a hopper to a delivery point. There was approximately one instance of the hardware that we were writing software for, and it sat on a bench between our two workstations. Most of the mechanical bits were in a more or less finished state. I was particularly impressed with the piston that generated partial vacuum so that items could be picked with a moving arm with suction cups on. Just one or two gears were made of prototyping plastic; and because of a gearing problem the belt didn't move at the speed that it said it should in the spec. But you know, typical prototype hardware. The electronics were a mixture of off-the-shelf dev kits for 8-bit embedded micros, mini custom circuit boards for novel sensors, and lovingly hand soldered discrete parts. Add to that the fact that as a software guy I didn't really understand the importance of grounding, and La Machine wasn't always completely reliable (my colleague had just lent me Tracy Kidder's Soul of a New Machine).
Various optical/IR sensors kept track of the items as they moved inside the internals of the machine, various other sensors kept track of motor positions and/or speeds. There was a slightly hairy state machine (documented using OmniGraffle) to keep track of it all. The target pick rate was 5 items per second, and as it took more than 200ms for an item to go from the hopper to the point where it left the machine, there could be several items "in-flight" at any one time (and of course, picking an item was never completely reliable, so the sensors were used to track the items, and determine if a retry was required).
This day it seemed to be working fine, except for some reason the software was reporting that items were failing to be delivered, when in fact I could plainly see that items were popping out of the top of the machine. This was causing the machine to prematurely stop, as it would, sensibly, stop picking items if it thought that a picked item was stuck inside the machine somewhere. Up to this point it had basically been working fine; it had been working the same morning. I was sat thinking about this and investigating somewhat. I'd even checked the last thing I'd changed. So I called my colleague over (just at the next desk) and he came over to look while I demonstrated the problem. It worked. There was no problem. Flakies (there's a memorable part of Kidder's book where one of the engineers in helping a more junior engineer sort out a problem with a wire-wrap memory board, grabs the whole frame and shakes it, claiming that it's probably just flakies; of course it works after that).
So that's okay then. But when I try it again, it's not working. Colleague comes over. Works. I work at it on my own. Doesn't work.
It turned out that it was quite a sunny day. The sun reached the window in the afternoon. Sunlight was falling on machine near the optical sensor and presumably bouncing around enough to prevent the sensor from registering the occlusion as the item went past. When my colleague came over, he was standing over the machine and his shadow blocked the sunlight. This wouldn't be a problem in the production hardware, as it was all in a box (and hence, dark inside).
I constructed an optical shield and installed it on La Machine (a post-it note stuck to the side).
This was not a problem that could be fixed using print. We did have print via the serial port, but printing more than one character was hazardous because it meant that time taken to transmit characters on the serial line would interfere with the realtime operation of the rest of the software (when items are being picked every 200ms, every millisecond counts).


text:
The House proceeded to the consideration of Bill C-14, an act providing for controls on the export, import or transit across Canada of rough diamonds and for a certification scheme for their export in order to meet Canada's obligations under the Kimberley Process, as reported (with amendment) from the committee.
House of Commons Hansard #25 of the 37th Parliament, 2nd Session. (The original version is on Parliament's site.) The word of the day was international.


text:
Juelz Santana & Starr - Jingle Bellz
Official video for "Jingle Bellz" – Juelz Santana & Starr from the album Jim Jones & Skull Gang present a Tribute to Bad Santa starring Mike Epps.
Please click the "Report" button below if the video on this page is not working properly.
Comments will only be displayed by verified emails. No Spamming or Racism.


text:
To communicate all of the ways NSF International helps protect public health and the environment, we have developed several media kits. The kits cover a wide array of public health and safety topics such as drinking water, food safety, dietary supplements and organics. Please contact Thomas Frey at +1 734.214.6242 or fill out our media contact form to request more information.
For details about experts at NSF available for interviews or speaking engagements, please visit the NSF Experts webpage.


text:
Amanda Bynes Is In a Cult, Kanye West and Kris Jenner Both Have Boyfriends, Scott Disick Isn't Mason's Father + More in This Week's Tabloids
We read Us Weekly, National Enquirer, Star, Life & Style and In Touch this week, and we did it for you. So you can take that off your calendar. You're welcome.
Here's what we learned: Channing and Jenna are ready for their baby, Kris Jenner was caught making out with her money, Paris Jackson knows Billie Jean was not Michael's lover (and a smooth criminal could be her dad), the sky isn't falling but Katie Holmes' weight is, Kanye West is gay, Amanda Bynes has a secret cult where twerking is a sacred dance -- and all kinds of other really real stuff you'd have to read to believe.
Us Weekly
Channing Tatum and Jenna Dewan are ready for their baby. Of course, the dreamy dream dad has doted on his baby mama every step of the way. As he would. And that's pretty much as far as we got because – gurgle – pics of Channing Tatum.
Maybe we can convince him that to be a good father he needs to pose in various states of undress more often. And tell him that his kid would want him to do another 'Magic Mike' movie.
Denise Richards has stepped in and is saving Charlie Sheen and Brooke Mueller's kids. Okay, she didn't Heidi Klum them out of a riptide or anything, but she IS going to Angelina Jolie those poor kids right out of their disastrous parenting situation. (Joking aside, mad props to the woman for stepping up.)
Nina Dobrev and Ian Somerhalder have had a sad split and Us Weekly knows why they broke up. Apparently – and this might shock you – the 'Vampire Diaries' costars didn't want to date each other anymore. Yeah, that'll do it. Also, if you didn't before, you know who they are now. Break-ups are good for that too.
In a bit of fun that should get top billing but didn't, Hollywood has some real-life mean girls. Madonna iced Gwyneth Paltrow – not in a mafioso kind of way, but in a "Madonna has never been a particularly nice person" kind of way. We'd say a televised Jello wrestling match is in order, but since Jello is a sugary processed food, it might very well kill Gwynnie on contact.
National Enquirer
This week, the National Enquirer takes us inside the Cleveland kidnap victims' house of horrors. Exclamation point. They have deftly uncovered torture, punishment, mind control and all kinds of other sensational, frightening things that will make you want to buy their magazine and read it. They even have an exclusive interview with the kidnapper's best friend, who tells all. In italics.
As is often the case, the Enquirer wins the prize for most nauseating capitalization off of a truly tragic occurrence. So, uh, bravo?
And speaking of nauseating and tragic, a 300-pound O.J. says, "I'm fat and ugly, but women still love me!" Which is weird because usually a guy needs money to make that statement true.
Kris Jenner, the half-naked Kardashian mom, was caught kissing a hunk. They don't say a hunk of what, but we believe – based on her lifestyle – it must have been a hunk of money. As in, she was most likely rolling around in the buff in her giant Scrooge McDuck pile of money and started making out with a big hunk of it. (Just prior, she told her kids she was going to visit her happy place.)
Kardashian money might also be why Kourtney has confessed to perma-boyfriend Scott Disick, "Mason's not your son." Her ex-lover – who just happens to look very similar to Disick – is convinced that he's the dad and his bombshell new evidence has forced Kourtney to come clean. The photos are very telling: Both the ex-lover and young Mason looked like toddlers when they were 2 years old.
A wasted Tiger Woods has humiliated Lindsey Vonn. Not only did he drink too much the last time they went out, he had the audacity to be photographed with his eyes wide open in a crazed expression. He also spent the entire date talking endlessly in slurred speech about golf, which had to be insufferable. But hey, it beats him forgetting he has a real girlfriend now and asking what her hourly rate is.
In a Jackson family shocker, daughter Paris has found her real dad. In a bit of astute sleuthing, she knew that Billie Jean was not Michael's lover. She also knew that while the conception experience was probably a thriller, Michael told most willing partners to beat it. Finally, she narrowed it down to the man in the mirror and a smooth criminal. From there it was a matter of looking at it in black and white and figuring out who was bad enough to be her dad.
In the matter of Nick Lachey versus Jessica Simpson, Nick is spilling all of Jessica's dirty secrets. The most shocking of which is that Simpson is actually quite smart – like Mayim Bialik, Danica McKellar smart – and she's just waiting for the perfect moment to punk us all. We're expecting her to join forces with living performance art project Amanda Bynes, who will finally confess she's not crazy at all and then join Jess for a tour they'll dub 'Smart and Sane 2: Electric Boogaloo.'
Life & Style
Get under something sturdy, because Katie Holmes' weight is plummeting. The poor dear is skin and bones. Apparently, after a year of peace, Katie's life has been thrown into turmoil as Tom Cruise returns for daughter Suri. And, apparently, all the food in the house.
A mortified Kanye West has now asked the world "What have I done?" To which the world replied, "Are you just repeating everything we're asking you? Because that's annoying."
In their never ending tabloid cover relationship drama, Blake Shelton and Miranda Lambert have separated. Or they have become separate people. It's hard to tell. It's something new and different – but pretty much the same – every week with Tabloid Them, so we're thinking it's the separate people thing. The two-headed, country singing creature that was Blakanda has now become two separate people! Eeeeeee!
Hopefully, that's not how they reproduce, or there will be 16 of them by the end of the week. But they'll be able to set up playdates with all the imaginary twins and triplets the tabloids keep trying to put in Jennifer Aniston, so there's that.
There are other women in Hollywood, besides Katie Holmes, who are stressed and scary skinny. Starlets like Kate, Heidi, Angelina, Keira and Rachel are looking skeletal because – according to the diagnosis of non-medically trained Life & Style – they are refusing to eat, starving to be sexy, struggling to do it all, wasting away or having careers in crisis. We don't know what's going on with their health, but seeing their ribs in the photos did make us hungry for barbecue.
In Touch
Oh look, it's another cover about the Kim Kardashian's alter ego Pregnant Kim. This time her worst fear has come true. He's gay. The "he" being her baby's father. PK has been humiliated by rumors that Kanye West has a secret boyfriend in Paris -- but it's possible that he's been seeing Paris Hilton and everyone misunderstood "in Paris."
Or maybe not, because InTouch has a photo that could be a pic of Kanye's alleged lover and he looks suspiciously like Kourtney's former lover, so the whole family might just be trading boyfriends now.
This is unbelievable – because she seems incapable of organizing much of anything – but Amanda Bynes has a secret cult. Members are forced to make themselves look like raving lunatics while driving erratically, getting their nails done in the middle of the night and twerking at the gym. And the cult member with the most selfies posted on Twitter automatically goes to heaven.
It wouldn't be 'Real Housewives' without the drama. In fact, it would just be 'Boring Rich Women Have a Lot of Cosmetic Surgery.' That's why RHoA's NeNe Leakes has crossed RH location lines to declare war on Brandi Glanville of RHoBH. She has released a battalion of sassy drones, but apparently, silicon doesn't show up on radar, so they're having a hard time locating any member of the 'Housewives' casts.
In other celebs-at-war news, it's January Jones versus Miley Cyrus in a classic showdown over Liam Hemsworth. The two have agreed to meet in the middle of Mulholland Drive at high noon – which means something totally different in Hollywood – and see who's the quickest draw. This means that the starlet who can get the most paparazzi to show up and start taking photos of her while she asks them to please leave her alone wins a chance to make Liam Hemsworth wish he had never left Australia.


text:
Browse beautiful Snowflake background images, transparent clipart, vectors and illustrations.
Watermelon is called "the king of midsummer", refreshing and quenching thirst, tastes sweet and juicy, is a good summer fruit.
Choose from the best scary and funny haunted house transparent images for Halloween holiday.
Black Friday 2019 is around the corner! It's time to prepare your marketing for Black Friday.