Creating a Parallax Scrolling Effect on Windows Phone
tl;dr: Here’s a commented sample project if you’re in a hurry
Windows Phone 8’s scrollviews have a property where if you scroll past the content area, the content is squished. Nokia’s App Social has a cool but subtle effect that takes advantage of this. If you’re looking at a recommendation list within the app and try pulling the list down, you’ll notice that the header image doesn’t scroll with the rest of the list. Instead, it scrolls slower than everything else, as well as expands to fill the space made by the squished scrollview.
If you’ve ever played with an iOS device, you should know this effect well, as it’s present in so many apps on that platform. My favorite example is probably within Day One, an awesome diary app, where within your diary entries you can set a header photo that behaves similarly.
You’re going to need a header image to test with. Might I recommend mine?
Creating this effect on Windows Phone is certainly tricky for a variety of reasons—in fact, if you play around with App Social’s implementation, you might even catch a few glitches—but with a bit of work you can hack together something like the above.
Let’s get to work! Open up VS and create a new blank WP8 project. This might work in WP7 (or even WP8.1!) but I haven’t tested it.
 Cras nec erat massa. Phasellus accumsan ornare velit non vestibulum. Quisque nulla mi, condimentum sit amet sapien quis, blandit facilisis leo. Praesent pulvinar, justo at ornare aliquet, tellus massa varius metus, nec euismod dui metus a mauris. Sed eu erat et nulla varius pharetra. Suspendisse id mi nibh. Donec ac quam vel erat malesuada porttitor convallis condimentum ipsum. Donec risus lectus, auctor dictum mauris et, lacinia condimentum sem." />
<LineBreak />
<LineBreak />
<Run Text="Donec gravida purus non gravida volutpat. Suspendisse id libero non nunc dignissim molestie. Phasellus lobortis sit amet libero non volutpat. Duis viverra, augue ac bibendum eleifend, leo metus tincidunt neque, in malesuada dolor leo ac eros. Ut eget justo faucibus, vulputate ante ac, varius urna. Etiam blandit turpis ac leo tristique scelerisque. Phasellus ac aliquam eros. Curabitur condimentum mi ligula, et porttitor leo consectetur sit amet. " />
<LineBreak />
<LineBreak />
<Run Text=" Sed pellentesque sapien a diam interdum, vitae sagittis velit varius. Curabitur vehicula in velit ac porttitor. Integer nec nunc tellus. Nullam pulvinar magna eu mollis dignissim. Sed mattis at erat id euismod. Vestibulum mattis nunc nec sapien ornare, sit amet tristique diam volutpat. Nulla ut venenatis erat. " />
</TextBlock>
</StackPanel>
</Grid>
</ScrollViewer>
</Grid>
I also recommend dealing with the system tray in some manner, whether it’d be making it transparent or hiding it altogether:
<!-- hide the system tray -->
shell:SystemTray.IsVisible="False"
<!-- or make it transparent -->
shell:SystemTray.IsVisible="True"
shell:SystemTray.Opacity="0"
Let’s now jump into the code-behind of the page. First of all, you’ll notice from the XAML that the image is top-aligned to the top of the page. This isn’t what we want. Instead, we want the center of the image to be at center of the empty space. As far as I know, there isn’t an easy way to do this within XAML (without clipping the image) so let’s do it programmatically:
public partial class MainPage : PhoneApplicationPage
{
// this is the height of the empty space above the content
// that we created in the XAML
private const double EmptySpace = 500;
// this will represent the vertical position of the image
// we're storing it in a variable because we'll need it later
private double _startPosition;
public MainPage()
{
InitializeComponent();
// we're putting our code in a Loaded event handler
// because we have to wait until the image control is loaded
// before getting its height
Loaded += OnLoaded;
}
private void OnLoaded(object sender, RoutedEventArgs e)
{
// Here's the magic
// To get the image where we want, we will shift it up by its height
// Then we'll shift it down by the height of the empty space
// Last, we'll divide that by two so we'll be directly between the top
// of the page and the bottom of the empty space
_startPosition = (-Image.ActualHeight + EmptySpace) / 2;
// set the TranslateY of the CompositeTransform we created in the XAML
// to our calculated start position
ImageTransform.TranslateY = _startPosition;
}
}
Perfect! Now Chitanda (or whatever you chose as your image) will be centered in the space rather than stuck to the top. This is very important because later on, we’ll be pulling the image down, so we don’t want it to end immediately at the top.
Now let’s get to the actual effect. Although it looks like one smooth effect, there’s actually two distinct parts. We need the image to scroll slowly when being hidden by content (the first part of the video above), and we also need to the image to “expand” when the scrollview is squished (the second part of the video). The first part is easier, so let’s do it first.
We need a way of detecting when the the scrollview is scrolled, and by how much. It turns out that the little scrollbar you see on the right is a good way of checking this. Now normally the scrollbar is buried deep within the ScrollViewer control, so we need some way of fishing it out. We’re going to use the VisualTreeHelper to do this:
private void OnLoaded(object sender, RoutedEventArgs e)
{
_startPosition = (-Image.ActualHeight + EmptySpace) / 2;
ImageTransform.TranslateY = _startPosition;
// extract the vertical scrollbar from our ScrollViewer named 'Scroller'
var scrollbar =
((FrameworkElement) VisualTreeHelper.GetChild(Scroller, 0)).FindName("VerticalScrollBar") as ScrollBar;
if (scrollbar != null)
{
// listen for scroll events
scrollbar.ValueChanged += OnScrollbarValueChanged;
}
}
Now that we’ve fetched the scrollbar, let’s see how we use it:
private void OnScrollbarValueChanged(object sender, RoutedPropertyChangedEventArgs<double> e)
{
// if we're in positive scrolling territory
// where positive means down
if (e.NewValue > 0)
{
// we're going to scroll our Image along with the content
// but only half as fast
// try removing the /2.0 and see what happens
ImageTransform.TranslateY = _startPosition - e.NewValue/2.0;
// instead of using the scrollbar's value, you can also use the VerticalOffset
// of the ScrollViewer itself
// try it, see which one works better for you performance-wise
// ImageTransform.TranslateY = _startPosition - Scroller.VerticalOffset/2.0;
}
}
That’s it! Now if you scroll the content to read more of it, you’ll notice that instead of staying put, the header image now scrolls along, but slower than the content.
We’re not done yet though. If you try pulling down on the content, causing it to squish, you’ll see that nothing happens to the header image. You might think that it’s because of the if (e.NewValue > 0)
check we did. But if you remove it, you’ll see that there’s no difference.
The problem is that the scrollbar’s value (as well as a ScrollViewer’s VerticalOffset) doesn’t respond to the squishing effect. It doesn’t become a negative value, which means that we can’t use for the second part of the parallax effect. This is where things get complicated.
The ScrollViewer control has a weird property called Content
, which is a UIElement representing whatever you put inside of it. That UIElement, like all UIElements, has a RenderTransform property. It turns out that when you squish a ScrollViewer, it sets that RenderTransform to a new CompositeTransform instance. It only does once a squish occurs though.  You’d instead get a MatrixTransform, and we can’t do anything useful with that. We’re going to need to detect when it becomes a CompositeTransform, and the MouseMove event is perfect for that:
private void OnLoaded(object sender, RoutedEventArgs e)
{
_startPosition = (-Image.ActualHeight + EmptySpace) / 2;
ImageTransform.TranslateY = _startPosition;
var scrollbar =
((FrameworkElement) VisualTreeHelper.GetChild(Scroller, 0)).FindName("VerticalScrollBar") as ScrollBar;
if (scrollbar != null)
{
scrollbar.ValueChanged += OnScrollbarValueChanged;
}
// when the mouse (the user tapping his screen) moves
// within the ScrollViewer, there's a chance that
// the ScrollViewer's Content's RenderTransform will be set to
// a new CompositeTransform that we need to grab a hold of
Scroller.MouseMove += ScrollerOnMouseMove;
}
private void ScrollerOnMouseMove(object sender, MouseEventArgs mouseEventArgs)
{
// grab the content element
var uiElement = Scroller.Content as UIElement;
if (uiElement != null)
{
// try to grab its transform as a CompositeTransform
var transform = uiElement.RenderTransform as CompositeTransform;
// if it's actually a CompositeTransform
if (transform != null)
{
// we're good, let's go to town!
}
}
}
Awesome, we got our hook! Now, we can use the TranslateY of the CompositeTransform and move our header image just like we did with the scrollbar. There’s a slight problem though.
This method, ScrollerOnMouseMove, will only be called when the “mouse” is moving within the ScrollViewer. There’s one case that it doesn’t handle: when the user squishes the content and then lets go, letting the content spring back into place. ScrollerOnMouseMove won’t be called then, so our image will never slide back into place.
We could use the MouseUp event for this to snap the image back into place, but that’ll be a harsh snapping instead of the smooth sliding that we want.
Instead, we’ll recall that the TranslateY property of a CompositeTransform is actually a dependency property, which means that it can be binded to:
// this will be our backing property for the binding
private double _verticalOffset;
public double VerticalOffset
{
get { return _verticalOffset; }
set
{
_verticalOffset = value;
onVerticalOffsetChanged();
}
}
private void onVerticalOffsetChanged()
{
// now let's do the same thing we did with the scrollbar
// we only want to handle the squishes here, as the
// scrollbar events handle the normal scrolling
// so we'll only respond to the squishes, when the content
// is being moved down
if (VerticalOffset >= 0)
{
ImageTransform.TranslateY = _startPosition + VerticalOffset/2.0;
}
}
private void ScrollerOnMouseMove(object sender, MouseEventArgs mouseEventArgs)
{
// grab the content element
var uiElement = Scroller.Content as UIElement;
if (uiElement != null)
{
// try to grab its transform as a CompositeTransform
var transform = uiElement.RenderTransform as CompositeTransform;
// if it's actually a CompositeTransform
if (transform != null)
{
// we're good, let's go to town!
// let's set up the binding in a standard manner
var binding = new Binding("VerticalOffset");
// in a perfect world, we use a reverse OneWay binding, where
// the DP we're binding to can set the backing property
// as this doesn't exist in the world of Windows Phone
// we're going to cheat and use TwoWay
binding.Mode = BindingMode.TwoWay;
binding.Source = this;
BindingOperations.SetBinding(transform, CompositeTransform.TranslateYProperty, binding);
// we're going to release the event handler
// since we only need to bind once
Scroller.MouseMove -= ScrollerOnMouseMove;
}
}
}
And now we’re done! For real this time! If you pull down on the content, squishing it, you’ll see your header image slowly slide down to fill the space. And if you release, the image will slide up with the content.
All is not perfect in the land of Windows Phone though.
I mentioned way back in the beginning that there was a peculiar line in our XAML that I’d discuss later. That line is ManipulationMode="Control"
. See, by default the ManipulationMode of a ScrollViewer is set to “System”. What this amounts to is that scrolling events are optimized and reports are chunked to get the smooth scrolling Windows Phone is known for. Setting it to “Control” throws some of these optimizations out of the window, but it’s the only way we can get accurate values for the scroll offsets. If you try setting it back to “System”, you’ll see that our smooth parallax scrolling becomes chunky, and in the case of handling squishes fails completely.
You’ll have to settle for the (albeit slight) performance decrease if you want this effect—you’ve probably already noticed that sometimes the header image stutters. You’ll also have to settle for some sporadic bugs that I’ve noticed, including the ScrollViewer getting “stuck” in the squished state, or it jumping to the top or the bottom if you flick randomly.
If you’re okay with it though (or you find some way to further optimize this, please tell me if you do!), this is a really nice looking effect, and it honestly isn’t a ton of trouble to implement.
If you don’t feel like copy-pasting all of this code and organizing it yourself, you can download a fully-commented example here: https://github.com/y2bd/WPParallaxScrolling
Here are two articles I used when figuring this out:


|
masscalculator-core
|
String constants that are used through the code. More...
Variables | |
| const std::string | SS_301 {"SS_301"} |
| String constant for SS_301 type. | |
| const std::string | SS_302 {"SS_302"} |
| String constant for SS_302 type. | |
| const std::string | SS_303 {"SS_303"} |
| String constant for SS_303 type. | |
| const std::string | SS_304 {"SS_304"} |
| String constant for SS_304 type. | |
| const std::string | SS_305 {"SS_305"} |
| String constant for SS_305 type. | |
| const std::string | SS_316 {"SS_316"} |
| String constant for SS_316 type. | |
| const std::string | SS_321 {"SS_321"} |
| String constant for SS_321 type. | |
| const std::string | SS_409 {"SS_409"} |
| String constant for SS_409 type. | |
| const std::string | SS_410 {"SS_410"} |
| String constant for SS_410 type. | |
| const std::string | SS_420 {"SS_420"} |
| String constant for SS_420 type. | |
| const std::string | SS_430 {"SS_430"} |
| String constant for SS_430 type. | |
| const std::string | SS_15_5 {"SS_15_5"} |
| String constant for SS_15_5 type. | |
| const std::string | SS_17_4 {"SS_17_4"} |
| String constant for SS_17_4 type. | |
| const std::string | UNSPECIFIED {"UNSPECIFIED"} |
| String constant for UNSPECIFIED type. | |
| const std::string | LuaConfigPath {std::string(getenv("HOME")) + "/.MassCalculator/resources/materials/stainless_steel_config.lua"} |
| Lua config path when we are in release mode, it will get the resources from the install directory. | |
String constants that are used through the code.


Here you will find all necessary tools to master an amazing role game with your friends. From dices, life counters, character's sheets, notes for your inventory, and much more.


001 /* 002 * Copyright (C) 2007 Google Inc. 003 * 004 * Licensed under the Apache License, Version 2.0 (the "License"); 005 * you may not use this file except in compliance with the License. 006 * You may obtain a copy of the License at 007 * 008 * http://www.apache.org/licenses/LICENSE-2.0 009 * 010 * Unless required by applicable law or agreed to in writing, software 011 * distributed under the License is distributed on an "AS IS" BASIS, 012 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 013 * See the License for the specific language governing permissions and 014 * limitations under the License. 015 */ 016 017 package com.google.common.collect; 018 019 import static com.google.common.base.Preconditions.checkNotNull; 020 021 import com.google.common.annotations.Beta; 022 import com.google.common.base.FinalizableReferenceQueue; 023 import com.google.common.base.FinalizableWeakReference; 024 025 import java.util.concurrent.ConcurrentMap; 026 027 /** 028 * Contains static methods pertaining to instances of {@link Interner}. 029 * 030 * @author Kevin Bourrillion 031 * @since 3 032 */ 033 @Beta 034 public final class Interners { 035 private Interners() {} 036 037 /** 038 * Returns a new thread-safe interner which retains a strong reference to 039 * each instance it has interned, thus preventing these instances from being 040 * garbage-collected. If this retention is acceptable, this implementation may 041 * perform better than {@link #newWeakInterner}. 042 */ 043 public static <E> Interner<E> newStrongInterner() { 044 final ConcurrentMap<E, E> map = new MapMaker().makeMap(); 045 return new Interner<E>() { 046 public E intern(E sample) { 047 E canonical = map.putIfAbsent(checkNotNull(sample), sample); 048 return (canonical == null) ? sample : canonical; 049 } 050 }; 051 } 052 053 /** 054 * Returns a new thread-safe interner which retains a weak reference to each 055 * instance it has interned, and so does not prevent these instances from 056 * being garbage-collected. This most likely does not perform as well as 057 * {@link #newStrongInterner}, but is the best alternative when the memory 058 * usage of that implementation is unacceptable. 059 */ 060 public static <E> Interner<E> newWeakInterner() { 061 return new WeakInterner<E>(); 062 } 063 064 private static class WeakInterner<E> implements Interner<E> { 065 private final ConcurrentMap<InternReference, InternReference> map 066 = new MapMaker().makeMap(); 067 068 public E intern(final E sample) { 069 final int hashCode = sample.hashCode(); 070 071 // TODO: once MapMaker supports arbitrary Equivalence, we won't need the 072 // dummy instance anymore 073 Object fakeReference = new Object() { 074 @Override public int hashCode() { 075 return hashCode; 076 } 077 @Override public boolean equals(Object object) { 078 if (object.hashCode() != hashCode) { 079 return false; 080 } 081 /* 082 * Implicitly an unchecked cast to WeakInterner<?>.InternReference, 083 * though until OpenJDK 7, the compiler doesn't recognize this. If we 084 * could explicitly cast to the wildcard type 085 * WeakInterner<?>.InternReference, that would be sufficient for our 086 * purposes. The compiler, however, rejects such casts (or rather, it 087 * does until OpenJDK 7). 088 * 089 * See Sun bug 6665356. 090 */ 091 @SuppressWarnings("unchecked") 092 InternReference that = (InternReference) object; 093 return sample.equals(that.get()); 094 } 095 }; 096 097 // Fast-path; avoid creating the reference if possible 098 InternReference existingRef = map.get(fakeReference); 099 if (existingRef != null) { 100 E canonical = existingRef.get(); 101 if (canonical != null) { 102 return canonical; 103 } 104 } 105 106 InternReference newRef = new InternReference(sample, hashCode); 107 while (true) { 108 InternReference sneakyRef = map.putIfAbsent(newRef, newRef); 109 if (sneakyRef == null) { 110 return sample; 111 } else { 112 E canonical = sneakyRef.get(); 113 if (canonical != null) { 114 return canonical; 115 } 116 } 117 } 118 } 119 120 private static final FinalizableReferenceQueue frq 121 = new FinalizableReferenceQueue(); 122 123 class InternReference extends FinalizableWeakReference<E> { 124 final int hashCode; 125 126 InternReference(E key, int hash) { 127 super(key, frq); 128 hashCode = hash; 129 } 130 public void finalizeReferent() { 131 map.remove(this); 132 } 133 @Override public E get() { 134 E referent = super.get(); 135 if (referent == null) { 136 finalizeReferent(); 137 } 138 return referent; 139 } 140 @Override public int hashCode() { 141 return hashCode; 142 } 143 @Override public boolean equals(Object object) { 144 // TODO: should we try to do something to make equals() somewhat more 145 // normal? 146 if (object == this) { 147 return true; 148 } 149 if (object instanceof WeakInterner.InternReference) { 150 /* 151 * On the following line, Eclipse wants a type parameter, producing 152 * WeakInterner<?>.InternReference. The problem is that javac rejects 153 * that form. Omitting WeakInterner satisfies both, though this seems 154 * odd, since we are inside a WeakInterner<E> and thus the 155 * WeakInterner<E> is implied, yet there is no reason to believe that 156 * the other object's WeakInterner has type E. That's right -- we've 157 * found a way to perform an unchecked cast without receiving a 158 * warning from either Eclipse or javac. Taking advantage of that 159 * seems questionable, even though we don't depend upon the type of 160 * that.get(), so we'll just suppress the warning. 161 */ 162 @SuppressWarnings("unchecked") 163 WeakInterner.InternReference that = 164 (WeakInterner.InternReference) object; 165 if (that.hashCode != hashCode) { 166 return false; 167 } 168 E referent = super.get(); 169 return referent != null && referent.equals(that.get()); 170 } 171 return object.equals(this); 172 } 173 } 174 } 175 }


--- title: Download Grammars: keywords: fastai sidebar: home_sidebar nb_path: "nbs/build_grammars.ipynb" ---
from tree_sitter import Language
Language.build_library(
# Store the library in the directory
'<out_dir>/tree-sitter-languages.so',
# Include one or more languages
[
'<path/to/repo>/tree-sitter-python',
'<path/to/repo>/tree-sitter-go',
'<path/to/repo>/tree-sitter-java'
]
)


A DANGEROUS LIFE A film review by Mark R. Leeper Copyright 1989 Mark R. Leeper
Capsule review: Six-hour HBO made-for-TV movie of the fall of Ferdinand Marcos combines strong doses of THE PRESIDENT'S MEN, YEAR OF LIVING DANGEROUSLY, and EXODUS in one film. A little slow in the middle, but it pays off by the end. This should be a model for future docu-dramas. Rating: +3.
The title is A DANGEROUS LIFE and if that title seems to be reminiscent of the title of Peter Weir's popular YEAR OF LIVING DANGEROUSLY, it may not be just a coincidence. I suppose the title could refer to it being dangerous for people that Ferdinand Marcos was alive and in power, or it could refer to fictional newsman Tony O'Neil's (played by Gary Busey) occasionally endangered existence covering dramatic events in the Philippines from the death of Ninoy Aquino to the fall of Marcos and the presidency of Ninoy's widow Corazon. Even if the title seems a little crass, the three-part, nearly six-hour mini-series delivers as a dramatic political story and at the same time as an historical chronicle. Because the title and subject matter conjure memories of YEAR OF LIVING DANGEROUSLY, A DANGEROUS LIFE invites comparison of the two films. The Weir film had one charismatic, enigmatic character, Billy Kwan. A DANGEROUS LIFE has no particularly fascinating character in a leading role. The main characters are involved in a nominal but dull love triangle. Who cares? In virtually every other regard, A DANGEROUS LIFE is a model for the political chronicle. It tells a piece of history most of us remember and tells in a dramatic and engrossing way a detailed history of the fall of Marcos. And it seems even more immediate for the extensive use of television news videotape.
Actually for interest value, the lead parts are eclipsed by that of Imelda Marcos (played by Tessie Tomas). Most people think of her as a sort of international joke, a vain woman who had a huge collection of shoes. Under Robert Markowitz's direction, she is as hypnotic and deadly as a cobra, a consummate politician and actress.
If it seems by the second installment that the story is going overly long, have faith--the third and final part more than compensates. One complaint that could be made is that it is a trifle one-sided. It does not protect the United States government, which gets a thorough and very probably well-deserved lambasting for valuing its Philippine military bases over the lives of the Filipino people. But Corazon Aquino is just a little too saintly and pure. Making her so perfect makes the film seem a little manipulative. But as a fault, this is only a very minor one. This production for HBO will inevitably be the first American made-for-television film to ever make my "Ten-Best-of-the-Year" list. Rate it a +3 on the -4 to +4 scale.
Mark R. Leeper att!mtgzz!leeper<EMAIL_ADDRESS>The review above was posted to the
rec.arts.movies.reviews newsgroup (de.rec.film.kritiken for German reviews).
The Internet Movie Database accepts no responsibility for the contents of the
review and has no editorial control. Unless stated otherwise, the copyright
belongs to the author.
Please direct comments/criticisms of the review to relevant newsgroups.
Broken URLs inthe reviews are the responsibility of the author.
The formatting of the review is likely to differ from the original due
to ASCII to HTML conversion.
Related links: index of all rec.arts.movies.reviews reviews


Gecode::Formula::Node Class Reference
List of all members.
Detailed Description
Nodes used to construct formulas.
Definition at line 50 of file formula.cc.
|
Public Member Functions |
| | Node (const int x) |
| | Construct node for x.
|
| | Node (Node *n0, int s0, Operator r, Node *n1, int s1) |
| | Construct node from nodes n0 and n1 with signs s0 and s1.
|
| void | increment (void) |
| | Increment reference count.
|
| bool | decrement (void) |
| | Decrement reference count and possibly free memory.
|
| std::set< int > | fv (void) |
| | Return free variables of the formula.
|
| bdd | toBdd (void) |
| | Transform formula into bdd.
|
Static Public Member Functions |
| static void * | operator new (size_t size) |
| | Memory management.
|
| static void | operator delete (void *p, size_t size) |
| | Memory management.
|
Constructor & Destructor Documentation
| Gecode::Formula::Node::Node |
( |
const int |
x |
) |
[inline] |
| Gecode::Formula::Node::Node |
( |
Node * |
n0, |
|
|
int |
s0, |
|
|
Operator |
r, |
|
|
Node * |
n1, |
|
|
int |
s1 | |
|
) |
| | [inline] |
Construct node from nodes n0 and n1 with signs s0 and s1.
Definition at line 113 of file formula.cc.
Member Function Documentation
| void Gecode::Formula::Node::increment |
( |
void |
|
) |
[inline] |
Increment reference count.
Definition at line 103 of file formula.cc.
| bool Gecode::Formula::Node::decrement |
( |
void |
|
) |
|
Decrement reference count and possibly free memory.
Definition at line 123 of file formula.cc.
| std::set< int > Gecode::Formula::Node::fv |
( |
void |
|
) |
[inline] |
Return free variables of the formula.
Definition at line 146 of file formula.cc.
| bdd Gecode::Formula::Node::toBdd |
( |
void |
|
) |
|
Transform formula into bdd.
Definition at line 153 of file formula.cc.
| void * Gecode::Formula::Node::operator new |
( |
size_t |
size |
) |
[inline, static] |
| void Gecode::Formula::Node::operator delete |
( |
void * |
p, |
|
|
size_t |
size | |
|
) |
| | [inline, static] |
The documentation for this class was generated from the following file:


| Class | Description |
|---|---|
| DhcpService |
Represents a DHCP network service.
|
| DhcpService.Builder | |
| ExternalNetwork |
Admin representation of external network.
|
| ExternalNetwork.Builder<T extends ExternalNetwork.Builder<T>> | |
| FirewallRule |
Represents a firewall rule.
|
| FirewallRule.Builder | |
| FirewallRuleProtocols |
Java class for anonymous complex type.
|
| FirewallRuleProtocols.Builder | |
| FirewallService |
Represents a network firewall service.
|
| FirewallService.Builder | |
| IpAddresses |
A list of IpAddresses.
|
| IpAddresses.Builder | |
| IpRange |
Represents a range of IP addresses, start and end inclusive.
|
| IpRange.Builder | |
| IpRanges |
A list of IpAddresses.
|
| IpRanges.Builder | |
| IpScope |
Specify network settings like gateway, network mask, DNS servers, IP ranges, etc.
|
| IpScope.Builder | |
| IpsecVpnLocalPeer |
Gives more details of local peer end point.
|
| IpsecVpnLocalPeer.Builder | |
| IpsecVpnManagedPeerType<T extends IpsecVpnManagedPeerType<T>> | |
| IpsecVpnManagedPeerType.Builder<T extends IpsecVpnManagedPeerType<T>> | |
| IpsecVpnPeerType<T extends IpsecVpnPeerType<T>> | |
| IpsecVpnRemotePeer |
Gives more details of remote peer end point.
|
| IpsecVpnRemotePeer.Builder | |
| IpsecVpnService |
Represents an IPSec-VPN network service.
|
| IpsecVpnService.Builder | |
| IpsecVpnThirdPartyPeer |
Gives more details of third party peer end point.
|
| IpsecVpnThirdPartyPeer.Builder | |
| IpsecVpnTunnel |
Represents details of an IPSec-VPN tunnel.
|
| IpsecVpnTunnel.Builder | |
| IpsecVpnUnmanagedPeerType<T extends IpsecVpnUnmanagedPeerType<T>> | |
| NatOneToOneBasicRule |
Represents the NAT basic rule for one to one mapping of internal
and external IP addresses from a network.
|
| NatOneToOneBasicRule.Builder | |
| NatOneToOneVmRule |
Represents the NAT rule for one to one mapping of VM NIC and
external IP addresses from a network.
|
| NatOneToOneVmRule.Builder | |
| NatPortForwardingRule |
Represents the NAT rule for port forwarding between internal
IP/port and external IP/port.
|
| NatPortForwardingRule.Builder | |
| NatRule |
Represents a NAT rule.
|
| NatRule.Builder | |
| NatService |
Represents a NAT network service.
|
| NatService.Builder | |
| NatVmRule |
Represents the NAT rule for port forwarding between VM NIC/port
and external IP/port.
|
| NatVmRule.Builder | |
| Network | |
| Network.Builder<T extends Network.Builder<T>> | |
| NetworkAssignment |
Represents mapping between a VM and vApp network.
|
| NetworkAssignment.Builder | |
| NetworkConfiguration |
Returns a network configuration
|
| NetworkConfiguration.Builder | |
| NetworkConnection |
Represents a network connection.
|
| NetworkConnection.Builder | |
| NetworkFeatures |
Represents features of a network.
|
| NetworkFeatures.Builder | |
| NetworkServiceType<T extends NetworkServiceType<T>> |
Represents a network service
|
| NetworkServiceType.Builder<T extends NetworkServiceType<T>> | |
| RouterInfo |
Specifies router information.
|
| RouterInfo.Builder | |
| SmtpServerSettings |
Specifies connection details for the organization s SMTP server.
|
| SmtpServerSettings.Builder | |
| StaticRoute |
Java class for StaticRoute complex type.
|
| StaticRoute.Builder | |
| StaticRoutingService |
Represents Static Routing network service.
|
| StaticRoutingService.Builder | |
| SyslogServerSettings |
Syslog server settings.
|
| SyslogServerSettings.Builder | |
| VAppNetwork |
Represents a vApp network.
|
| VAppNetwork.Builder<B extends VAppNetwork.Builder<B>> | |
| VAppNetworkConfiguration |
Represents a VApp network configuration.
|
| VAppNetworkConfiguration.Builder<B extends VAppNetworkConfiguration.Builder<B>> |
| Enum | Description |
|---|---|
| Network.FenceMode | |
| NetworkConnection.IpAddressAllocationMode |
Copyright © 2009-2013 jclouds. All Rights Reserved.


--- ---
|
Event Title: |
Fusion and Spatio-temporal Patterns in (2+1) Dimensional K-dV Type Equations |
|
Speaker: |
Dr. R.Radha |
|
Affiliation: |
Department of Physics |
|
Abstract/Brief Description: |
In this talk, we construct exponentrally localized solutions (dromions) of the (2+1) dimensional K-dV type equation and explain their unelastic colliscon. We then drive the arbitrary functions (boundaries) floating in the system in the form of a chaotic oscillator and study the onslaught of the chaotic oscillator on the coherent structure to generate new spatio-temporal patterns. |
|
Subject Area: |
Mathematics |
|
Date: |
|
|
Time: |
|
|
Venue: |
Lecture Hall - I, Dept. of Mathematics, IISc. |


{% extends 'base.html' %} {% block body %}
{{ product.description }}
Announced by {{ product.user.get_full_name }} on {{ product.created }}


Hi, this is a controller and this is my styles with
AngularJS
.
Change property
Change Class
Reset All


A Table widget displays data in tabular format, i.e. in rows and columns. Each row in the table represents an item, and each column shows a selected attribute of that item. You can scroll and sort this data using the controls on the widget.
To present table values in a way that makes the most sense for users, it's necessary to specify an appropriate way to format the values of each column. With that in mind, a column formatter component can be used to format given data in a specific way. As such, the default formatter will format any given value as a simple string. But, data often need to be transformed beyond their raw value in some way to correctly display data types such as numbers, times, dates, pictures, links, etc. In those cases, a formatter specialized in formatting the particular data type must be used.
The example below has the UrlInteractionHandler
configured to handle the interactions that occur on the table's columns.
Look at the inline comments in the source expander to see how it is configured.
There are table specific data source features that are useful only when given data source is used in the context of a table widget. These are:
DisableTableColumnGeneration
disables automatic column generation in the table widget editor. This was introduced to maintain
backward compatibility with previous implementations of the table widget.
The code listings below are the source files for the Table widget definition with inline comments describing the parts that compose the standard Table widget type. It includes the widget's definition as well as its corresponding configurator form for defining how to configure (create/edit) the widget.
This part shows the actual widget definition. It includes, among other things, the components and providers that compose the widget itself.
This part shows the form that's used for configuring (creating/editing) the widget.
Scroll Activation Delay: By default, the table widget delays scroll activation for a short period of time after
mouseenter
to mitigate accidental scrolling of the table while scrolling through the dashboard.
To disable this feature, follow these steps:
const table = this.widgetTypesService.getWidgetType("table");
table.widget.structure.table.properties.delayedMousePresenceDetectionEnabled = false;
Additionally, you can override the default delay of 500 ms:
const table = this.widgetTypesService.getWidgetType("table");
table.widget.structure.table.properties.configuration.scrollActivationDelayMs = 750


Psalms 71:23
My lips shall greatly rejoice when I sing unto thee; and my soul, which thou hast redeemed.


✘
Email:
Password:
Log In
Forgot Password
Create Account
|
Login
homeView
detailedView
accountView
createAccView


| Package | Description |
|---|---|
| com.cyc |
Cyc API factories and constants.
|
| com.cyc.kb |
Interfaces for manipulating CycL-based java objects, both for the purpose of
making assertions and for retrieving terms and values via simple queries.
|
| com.cyc.kb.wrapper |
Abstract classes for implementing KbObjects per the decorator pattern.
|
| com.cyc.query |
Interfaces for asking arbitrarily complex queries of a Cyc server, and processing the answers.
|
| com.cyc.query.spi |
All Query API service provider interfaces.
|
| com.cyc.session |
Interfaces for configuring and managing connections to a Cyc server.
|
| com.cyc.session.exception |
Session API exception hierarchy.
|
| com.cyc.session.spi |
All Session API service provider interfaces.
|
| Class and Description |
|---|
| SessionServiceException
SessionServiceException occur when the Session API has trouble loading a service provider.
|
| Class and Description |
|---|
| SessionCommunicationException
SessionCommunicationException indicates that an application library encountered a problem when
attempting to communicate with a Cyc server.
|
| SessionException
SessionException is the base exception which indicates that an application library has
encountered a problem in interacting with a Cyc server.
|
| Class and Description |
|---|
| SessionCommunicationException
SessionCommunicationException indicates that an application library encountered a problem when
attempting to communicate with a Cyc server.
|
| SessionException
SessionException is the base exception which indicates that an application library has
encountered a problem in interacting with a Cyc server.
|
| Class and Description |
|---|
| OpenCycUnsupportedFeatureException
Indicates that a particular piece of functionality is categorically unsupported by OpenCyc
servers.
|
| SessionCommunicationException
SessionCommunicationException indicates that an application library encountered a problem when
attempting to communicate with a Cyc server.
|
| UnsupportedCycOperationException
Thrown to indicate that a Cyc server does not support a particular operation.
|
| Class and Description |
|---|
| UnsupportedCycOperationException
Thrown to indicate that a Cyc server does not support a particular operation.
|
| Class and Description |
|---|
| SessionCommandException
SessionCommandException indicates that Session implementation code could communicate with a Cyc
server, but encountered a problem issuing a command or interpreting a result.
|
| SessionCommunicationException
SessionCommunicationException indicates that an application library encountered a problem when
attempting to communicate with a Cyc server.
|
| SessionConfigurationException
CycSessionException indicates that a Cyc session has been mis-configured or not been configured
at all.
|
| SessionInitializationException
SessionInitializationException indicates that a problem was encountered when initializing a
CycSession.
|
| Class and Description |
|---|
| OpenCycUnsupportedFeatureException
Indicates that a particular piece of functionality is categorically unsupported by OpenCyc
servers.
|
| SessionCommandException
SessionCommandException indicates that Session implementation code could communicate with a Cyc
server, but encountered a problem issuing a command or interpreting a result.
|
| SessionCommunicationException
SessionCommunicationException indicates that an application library encountered a problem when
attempting to communicate with a Cyc server.
|
| SessionConfigurationException
CycSessionException indicates that a Cyc session has been mis-configured or not been configured
at all.
|
| SessionException
SessionException is the base exception which indicates that an application library has
encountered a problem in interacting with a Cyc server.
|
| SessionInitializationException
SessionInitializationException indicates that a problem was encountered when initializing a
CycSession.
|
| SessionManagerConfigurationException
Indicates that a
SessionManagerConfiguration has been mis-configured or not been
configured at all. |
| SessionManagerException
Indicates an error with an existing
SessionManager . |
| SessionRuntimeException
SessionRuntimeException is the base runtime exception which indicates that an application library
has encountered a problem in interacting with a Cyc server.
|
| SessionServiceException
SessionServiceException occur when the Session API has trouble loading a service provider.
|
| UnsupportedCycOperationException
Thrown to indicate that a Cyc server does not support a particular operation.
|
| Class and Description |
|---|
| SessionManagerConfigurationException
Indicates that a
SessionManagerConfiguration has been mis-configured or not been
configured at all. |
| SessionManagerException
Indicates an error with an existing
SessionManager . |
| SessionServiceException
SessionServiceException occur when the Session API has trouble loading a service provider.
|
Copyright © 2015–2018 Cycorp, Inc. All rights reserved.


Questioner
Home
All Meetups
Signin
Signup
Every Question is Important
Questioner helps the meetup organizer prioritize questions to be answered
Get Started


In the Getting Started tutorial, we automated a simple task
but we noticed there was still a lot of typing.
RobotWare has parameters which is a way of referring to the same piece of text. For example,
in the Getting Started tutorial, the directory we created
(c:\temp\RobotWare) was used in several places. If we changed our the directory name, we would
then have to change it everywhere it is used. Parameters allow you to change it in one place
and have it reflected everywhere it is used.
Let's automate the same simple task to show how to use RobotWare with parameters:
delete an existing directory
create the directory again
copy an existing image file to the new directory
resize the image to 400x400 pixels
save the resized image to a new name
play a system sound to let us know it is finished
Doing this in Windows is tedious but is easily done in RobotWare:
start RobotWare
click New... button
Editor dialog is displayed
click Parameters... button
Parameters Editor dialog is displayed
click Add... button
Add Parameter dialog is displayed
in Name box, type ImageSourceDir
in Value box, type c:\temp\RobotWare
this will be the directory we will delete and then recreate
click OK button
click Add... button again and create parameters for:
Name
Value
Comment
ImageSourceDir
c:\temp\RobotWare
directory we will delete and then recreate
OriginalImageName
[use browse button to select file]
file name of image to be resized
OriginalImageSourceDir
[use browse button to select directory]
directory of image to be resized
ResizedImageName
[enter a new image file name]
file name of resized image
we should now be in the Parameters Editor dialog, so click OK button to go back to the Editor dialog
click Add... button
Add Step dialog is displayed
in Search box, type delete
double click on Delete a directory step
Add Step dialog is closed and Delete a directory step is added to Editor
in Source box, right click
from the popup menu which appears, select ImageSourceDir
in the box above, notice how the summary of the step says Delete c:\temp\RobotWare and any subdirectories and files
click Add... button
Add Step dialog is displayed
in Search box, type create
double click on Create a directory step
Add Step dialog is closed and Create a directory step is added to Editor
in Source box, right click and select ImageSourceDir
in the box above, notice how the summary of the step says Create c:\temp\RobotWare
click Add... button
in Search box, type copy
double click Copy a file step
Add Step dialog is closed and Copy a file step is added to Editor
in Source box, right click and select OriginalImageSourceDir
in Source box, type \
in Source box, right click and select OriginalImageName
in Destination box, right click and select ImageSourceDir
in Destination box, type \
in Destination box, right click and select OriginalImageName
in the box above, notice how the summary of the step has updated with the values of the parameters
click Add... button
in Search box, type image
double click Resize an image by pixels step
in Source box, right click and select ImageSourceDir
in Source box, type \
in Source box, right click and select OriginalImageName
in Destination box, right click and select ImageSourceDir
in Destination box, type \
in Destination box, right click and select ResizedImageName
in the box above, notice how the summary of the step has updated with the values of the parameters
in Pixels Wide and Pixels High boxes, type 400
click Add... button
in Search box, type sound
double click Play a Windows system sound step
in Play drop down list, select Exclamation
click Save button
Save dialog is displayed
in box, enter RobotWare Parameters Tutorial and click Add... button
click Run button
each step is performed and a sound is played at the end
What we now have is a Specification which we can run again at a later time.
More importantly, we have a Specification which uses parameters to make
it easily modifiable if, for example, we would like to resize a different image file.
In this case, we only need to change one parameters in one place to make the
change.
Once you have mastered parameters, have a look at Batch Operations
which gives you even more power and flexibility.