alvinalexander.com | career | drupal | java | mac | mysql | perl | scala | uml | unix  

Java example source code file (JRSUIConstantSync.m)

This example Java source code file (JRSUIConstantSync.m) is included in the alvinalexander.com "Java Source Code Warehouse" project. The intent of this project is to help you "Learn Java by Example" TM.

Learn more about this Java project at its project page.

Java - Java tags/keywords

assign_key, assign_key_if_exists, cfnumbercreate, cfnumberref, cftyperef, consistency_check, if_changed_set_keyed_boolean, if_changed_set_using, jni_constant, jrs_constant, mask, null, shift

The JRSUIConstantSync.m Java example source code

/*
 * Copyright (c) 2011, 2012, Oracle and/or its affiliates. All rights reserved.
 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
 *
 * This code is free software; you can redistribute it and/or modify it
 * under the terms of the GNU General Public License version 2 only, as
 * published by the Free Software Foundation.  Oracle designates this
 * particular file as subject to the "Classpath" exception as provided
 * by Oracle in the LICENSE file that accompanied this code.
 *
 * This code is distributed in the hope that it will be useful, but WITHOUT
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
 * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
 * version 2 for more details (a copy is included in the LICENSE file that
 * accompanied this code).
 *
 * You should have received a copy of the GNU General Public License version
 * 2 along with this work; if not, write to the Free Software Foundation,
 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
 *
 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
 * or visit www.oracle.com if you need additional information or have any
 * questions.
 */

#import <JavaNativeFoundation/JavaNativeFoundation.h>
#import <JavaRuntimeSupport/JavaRuntimeSupport.h>

#import "apple_laf_JRSUIConstants.h"
#import "apple_laf_JRSUIConstants_Key.h"
#import "apple_laf_JRSUIConstants_AlignmentVertical.h"
#import "apple_laf_JRSUIConstants_AlignmentHorizontal.h"
#import "apple_laf_JRSUIConstants_Animating.h"
#import "apple_laf_JRSUIConstants_ArrowsOnly.h"
#import "apple_laf_JRSUIConstants_BooleanValue.h"
#import "apple_laf_JRSUIConstants_Direction.h"
#import "apple_laf_JRSUIConstants_Focused.h"
#import "apple_laf_JRSUIConstants_FrameOnly.h"
#import "apple_laf_JRSUIConstants_IndicatorOnly.h"
#import "apple_laf_JRSUIConstants_NoIndicator.h"
#import "apple_laf_JRSUIConstants_NothingToScroll.h"
#import "apple_laf_JRSUIConstants_Orientation.h"
#import "apple_laf_JRSUIConstants_ScrollBarPart.h"
#import "apple_laf_JRSUIConstants_SegmentPosition.h"
#import "apple_laf_JRSUIConstants_SegmentTrailingSeparator.h"
#import "apple_laf_JRSUIConstants_SegmentLeadingSeparator.h"
#import "apple_laf_JRSUIConstants_ShowArrows.h"
#import "apple_laf_JRSUIConstants_Size.h"
#import "apple_laf_JRSUIConstants_State.h"
#import "apple_laf_JRSUIConstants_Variant.h"
#import "apple_laf_JRSUIConstants_Widget.h"
#import "apple_laf_JRSUIConstants_WindowType.h"
#import "apple_laf_JRSUIConstants_WindowTitleBarSeparator.h"
#import "apple_laf_JRSUIConstants_WindowClipCorners.h"

#import "JRSUIConstantSync.h"


static CFTypeRef widgetKey = NULL;
static CFTypeRef stateKey = NULL;
static CFTypeRef sizeKey = NULL;
static CFTypeRef directionKey = NULL;
static CFTypeRef orientationKey = NULL;
static CFTypeRef verticalAlignmentKey = NULL;
static CFTypeRef horizontalAlignmentKey = NULL;
static CFTypeRef positionKey = NULL;
static CFTypeRef pressedPartKey = NULL;
static CFTypeRef variantKey = NULL;
static CFTypeRef windowTypeKey = NULL;
static CFTypeRef focusedKey = NULL;
static CFTypeRef indicatorOnlyKey = NULL;
static CFTypeRef noIndicatorKey = NULL;
static CFTypeRef nothingToScrollKey = NULL;
static CFTypeRef arrowsOnlyKey = NULL;
static CFTypeRef frameOnlyKey = NULL;
static CFTypeRef segmentTrailingSeparatorKey = NULL;
static CFTypeRef segmentLeadingSeparatorKey = NULL;
static CFTypeRef windowFrameDrawClippedKey = NULL;
static CFTypeRef windowFrameDrawTitleSeparatorKey = NULL;
static CFTypeRef maximumValueKey = NULL;
static CFTypeRef valueKey = NULL;
static CFTypeRef animationStartTimeKey = NULL;
static CFTypeRef animationTimeKey = NULL;


#define JRS_CONSTANT(clazz, constant)                                \
    kJRSUI_ ## clazz ## _ ## constant

#define JNI_CONSTANT(clazz, constant)                                \
    apple_laf_JRSUIConstants_ ## clazz ## __ ## constant

#define CONSTANT_CHECK(clazz, constant)                                \
    JRS_CONSTANT(clazz, constant) == JNI_CONSTANT(clazz, constant)

#define CONSISTENCY_CHECK(clazz, constant)                            \
    if ( !CONSTANT_CHECK(clazz, constant) ) return NO;

#define ASSIGN_KEY(key)                                                \
    key ## Key = JRSUIGetKey(JRS_CONSTANT(Key, key));                \
    if (key ## Key == NULL) return NO;

#define ASSIGN_KEY_IF_EXISTS(key, constant)                          \
    key ## Key = JRSUIGetKey(constant);

static BOOL init_and_check_constant_coherency() {
    ASSIGN_KEY(widget);
    ASSIGN_KEY(state);
    ASSIGN_KEY(size);
    ASSIGN_KEY(direction);
    ASSIGN_KEY(orientation);
    ASSIGN_KEY(verticalAlignment);
    ASSIGN_KEY(horizontalAlignment);
    ASSIGN_KEY(position);
    ASSIGN_KEY(pressedPart);
    ASSIGN_KEY(variant);
    ASSIGN_KEY(windowType);
    ASSIGN_KEY(focused);
    ASSIGN_KEY(indicatorOnly);
    ASSIGN_KEY(noIndicator);
    ASSIGN_KEY(nothingToScroll);
    ASSIGN_KEY(arrowsOnly);
    ASSIGN_KEY(frameOnly);
    ASSIGN_KEY(segmentTrailingSeparator);
    ASSIGN_KEY_IF_EXISTS(segmentLeadingSeparator, 29); // kJRSUI_Key_segmentLeadingSeparator = 29
    ASSIGN_KEY(windowFrameDrawClipped);
    ASSIGN_KEY(windowFrameDrawTitleSeparator);
    ASSIGN_KEY(maximumValue);
    ASSIGN_KEY(value);
    ASSIGN_KEY(animationStartTime);
    ASSIGN_KEY(animationTime);

    CONSISTENCY_CHECK(Key, value);
    CONSISTENCY_CHECK(Key, thumbProportion);
    CONSISTENCY_CHECK(Key, thumbStart);
    CONSISTENCY_CHECK(Key, animationFrame);
    CONSISTENCY_CHECK(Key, windowTitleBarHeight);

    CONSISTENCY_CHECK(Widget, background);
    CONSISTENCY_CHECK(Widget, buttonBevel);
    CONSISTENCY_CHECK(Widget, buttonBevelInset);
    CONSISTENCY_CHECK(Widget, buttonBevelRound);
    CONSISTENCY_CHECK(Widget, buttonCheckBox);
    CONSISTENCY_CHECK(Widget, buttonComboBox);
    CONSISTENCY_CHECK(Widget, buttonComboBoxInset);
    CONSISTENCY_CHECK(Widget, buttonDisclosure);
    CONSISTENCY_CHECK(Widget, buttonListHeader);
    CONSISTENCY_CHECK(Widget, buttonLittleArrows);
    CONSISTENCY_CHECK(Widget, buttonPopDown);
    CONSISTENCY_CHECK(Widget, buttonPopDownInset);
    CONSISTENCY_CHECK(Widget, buttonPopDownSquare);
    CONSISTENCY_CHECK(Widget, buttonPopUp);
    CONSISTENCY_CHECK(Widget, buttonPopUpInset);
    CONSISTENCY_CHECK(Widget, buttonPopUpSquare);
    CONSISTENCY_CHECK(Widget, buttonPush);
    CONSISTENCY_CHECK(Widget, buttonPushScope);
    CONSISTENCY_CHECK(Widget, buttonPushScope2);
    CONSISTENCY_CHECK(Widget, buttonPushTextured);
    CONSISTENCY_CHECK(Widget, buttonPushInset);
    CONSISTENCY_CHECK(Widget, buttonPushInset2);
    CONSISTENCY_CHECK(Widget, buttonRadio);
    CONSISTENCY_CHECK(Widget, buttonRound);
    CONSISTENCY_CHECK(Widget, buttonRoundHelp);
    CONSISTENCY_CHECK(Widget, buttonRoundInset);
    CONSISTENCY_CHECK(Widget, buttonRoundInset2);
    CONSISTENCY_CHECK(Widget, buttonSearchFieldCancel);
    CONSISTENCY_CHECK(Widget, buttonSearchFieldFind);
    CONSISTENCY_CHECK(Widget, buttonSegmented);
    CONSISTENCY_CHECK(Widget, buttonSegmentedInset);
    CONSISTENCY_CHECK(Widget, buttonSegmentedInset2);
    CONSISTENCY_CHECK(Widget, buttonSegmentedSCurve);
    CONSISTENCY_CHECK(Widget, buttonSegmentedTextured);
    CONSISTENCY_CHECK(Widget, buttonSegmentedToolbar);
    CONSISTENCY_CHECK(Widget, dial);
    CONSISTENCY_CHECK(Widget, disclosureTriangle);
    CONSISTENCY_CHECK(Widget, dividerGrabber);
    CONSISTENCY_CHECK(Widget, dividerSeparatorBar);
    CONSISTENCY_CHECK(Widget, dividerSplitter);
    CONSISTENCY_CHECK(Widget, focus);
    CONSISTENCY_CHECK(Widget, frameGroupBox);
    CONSISTENCY_CHECK(Widget, frameGroupBoxSecondary);
    CONSISTENCY_CHECK(Widget, frameListBox);
    CONSISTENCY_CHECK(Widget, framePlacard);
    CONSISTENCY_CHECK(Widget, frameTextField);
    CONSISTENCY_CHECK(Widget, frameTextFieldRound);
    CONSISTENCY_CHECK(Widget, frameWell);
    CONSISTENCY_CHECK(Widget, growBox);
    CONSISTENCY_CHECK(Widget, growBoxTextured);
    CONSISTENCY_CHECK(Widget, gradient);
    CONSISTENCY_CHECK(Widget, menu);
    CONSISTENCY_CHECK(Widget, menuItem);
    CONSISTENCY_CHECK(Widget, menuBar);
    CONSISTENCY_CHECK(Widget, menuTitle);
    CONSISTENCY_CHECK(Widget, progressBar);
    CONSISTENCY_CHECK(Widget, progressIndeterminateBar);
    CONSISTENCY_CHECK(Widget, progressRelevance);
    CONSISTENCY_CHECK(Widget, progressSpinner);
    CONSISTENCY_CHECK(Widget, scrollBar);
    CONSISTENCY_CHECK(Widget, scrollColumnSizer);
    CONSISTENCY_CHECK(Widget, slider);
    CONSISTENCY_CHECK(Widget, sliderThumb);
    CONSISTENCY_CHECK(Widget, synchronization);
    CONSISTENCY_CHECK(Widget, tab);
    CONSISTENCY_CHECK(Widget, titleBarCloseBox);
    CONSISTENCY_CHECK(Widget, titleBarCollapseBox);
    CONSISTENCY_CHECK(Widget, titleBarZoomBox);
    CONSISTENCY_CHECK(Widget, titleBarToolbarButton);
    CONSISTENCY_CHECK(Widget, toolbarItemWell);
    CONSISTENCY_CHECK(Widget, windowFrame);

    CONSISTENCY_CHECK(State, active);
    CONSISTENCY_CHECK(State, inactive);
    CONSISTENCY_CHECK(State, disabled);
    CONSISTENCY_CHECK(State, pressed);
    CONSISTENCY_CHECK(State, pulsed);
    CONSISTENCY_CHECK(State, rollover);
    CONSISTENCY_CHECK(State, drag);

    CONSISTENCY_CHECK(Size, mini);
    CONSISTENCY_CHECK(Size, small);
    CONSISTENCY_CHECK(Size, regular);
    CONSISTENCY_CHECK(Size, large);

    CONSISTENCY_CHECK(Direction, none);
    CONSISTENCY_CHECK(Direction, up);
    CONSISTENCY_CHECK(Direction, down);
    CONSISTENCY_CHECK(Direction, left);
    CONSISTENCY_CHECK(Direction, right);
    CONSISTENCY_CHECK(Direction, north);
    CONSISTENCY_CHECK(Direction, south);
    CONSISTENCY_CHECK(Direction, east);
    CONSISTENCY_CHECK(Direction, west);

    CONSISTENCY_CHECK(Orientation, horizontal);
    CONSISTENCY_CHECK(Orientation, vertical);

    CONSISTENCY_CHECK(AlignmentHorizontal, left);
    CONSISTENCY_CHECK(AlignmentHorizontal, center);
    CONSISTENCY_CHECK(AlignmentHorizontal, right);

    CONSISTENCY_CHECK(AlignmentVertical, top);
    CONSISTENCY_CHECK(AlignmentVertical, center);
    CONSISTENCY_CHECK(AlignmentVertical, bottom);

    CONSISTENCY_CHECK(SegmentPosition, first);
    CONSISTENCY_CHECK(SegmentPosition, middle);
    CONSISTENCY_CHECK(SegmentPosition, last);
    CONSISTENCY_CHECK(SegmentPosition, only);

    CONSISTENCY_CHECK(ScrollBarPart, none);
    CONSISTENCY_CHECK(ScrollBarPart, thumb);
    CONSISTENCY_CHECK(ScrollBarPart, arrowMin);
    CONSISTENCY_CHECK(ScrollBarPart, arrowMax);
    CONSISTENCY_CHECK(ScrollBarPart, arrowMaxInside);
    CONSISTENCY_CHECK(ScrollBarPart, arrowMinInside);
    CONSISTENCY_CHECK(ScrollBarPart, trackMin);
    CONSISTENCY_CHECK(ScrollBarPart, trackMax);

    CONSISTENCY_CHECK(Variant, menuGlyph);
    CONSISTENCY_CHECK(Variant, menuPopup);
    CONSISTENCY_CHECK(Variant, menuPulldown);
    CONSISTENCY_CHECK(Variant, menuHierarchical);
    CONSISTENCY_CHECK(Variant, gradientListBackgroundEven);
    CONSISTENCY_CHECK(Variant, gradientListBackgroundOdd);
    CONSISTENCY_CHECK(Variant, gradientSideBar);
    CONSISTENCY_CHECK(Variant, gradientSideBarSelection);
    CONSISTENCY_CHECK(Variant, gradientSideBarFocusedSelection);

    CONSISTENCY_CHECK(WindowType, document);
    CONSISTENCY_CHECK(WindowType, utility);
    CONSISTENCY_CHECK(WindowType, titlelessUtility);

    return YES;
}

static CFBooleanRef get_boolean_value_for(jbyte value) {
    return (value != 0) ? kCFBooleanTrue : kCFBooleanFalse;
}

static CFNumberRef get_boolean_number_value_for(jbyte value) {
    static CFNumberRef zero = NULL;
    static CFNumberRef one = NULL;

    if (!zero) {
        double zeroVal = 0.0;
        zero = CFNumberCreate(NULL, kCFNumberDoubleType, &zeroVal);
        double oneVal = 1.0;
        one = CFNumberCreate(NULL, kCFNumberDoubleType, &oneVal);
    }

    return (value != 0) ? one : zero;
}

BOOL _InitializeJRSProperties() {
    static BOOL initialized = NO;
    static BOOL coherent = NO;

    if (!initialized) {
        coherent = init_and_check_constant_coherency();
        initialized = YES;
    }

    return coherent;
}

#define MASK(property) \
    apple_laf_JRSUIConstants_ ## property ## _MASK

#define SHIFT(property) \
    apple_laf_JRSUIConstants_ ## property ## _SHIFT

#define IF_CHANGED_SET_USING(property, setter)                        \
{                                                                    \
    jlong value = (newProperties & MASK(property));                    \
    if ((value - (oldProperties & MASK(property))) != 0L) {            \
        setter(control, value >> SHIFT(property));                    \
    }                                                                \
}

#define IF_CHANGED_SET_KEYED_BOOLEAN(property, key, getter)            \
{                                                                    \
    jlong value = (newProperties & MASK(property));                    \
    if ((value - (oldProperties & MASK(property))) != 0L) {            \
        CFTypeRef cfValue = getter(value >> SHIFT(property));        \
        if (cfValue) {                                                \
            JRSUIControlSetValueByKey(control, key, cfValue);        \
        }                                                            \
    }                                                                \
}

#define IF_KEY_EXISTS_DO(key, operation)                             \
{                                                                    \
    if (key != NULL) {                                               \
        operation;                                                   \
    }                                                                \
}

jint _SyncEncodedProperties(JRSUIControlRef control, jlong oldProperties, jlong newProperties) {
    if (!_InitializeJRSProperties()) abort();

    IF_CHANGED_SET_USING(Widget, JRSUIControlSetWidget);
    IF_CHANGED_SET_USING(State, JRSUIControlSetState);
    IF_CHANGED_SET_USING(Size, JRSUIControlSetSize);
    IF_CHANGED_SET_USING(Direction, JRSUIControlSetDirection);
    IF_CHANGED_SET_USING(Orientation, JRSUIControlSetOrientation);
    IF_CHANGED_SET_USING(AlignmentVertical, JRSUIControlSetAlignmentVertical);
    IF_CHANGED_SET_USING(AlignmentHorizontal, JRSUIControlSetAlignmentHorizontal);
    IF_CHANGED_SET_USING(SegmentPosition, JRSUIControlSetSegmentPosition);
    IF_CHANGED_SET_USING(ScrollBarPart, JRSUIControlSetScrollBarPart);
    IF_CHANGED_SET_USING(Variant, JRSUIControlSetVariant);
    IF_CHANGED_SET_USING(WindowType, JRSUIControlSetWindowType);
    IF_CHANGED_SET_USING(ShowArrows, JRSUIControlSetShowArrows);

    IF_CHANGED_SET_KEYED_BOOLEAN(Focused, focusedKey, get_boolean_value_for);
    IF_CHANGED_SET_KEYED_BOOLEAN(IndicatorOnly, indicatorOnlyKey, get_boolean_value_for);
    IF_CHANGED_SET_KEYED_BOOLEAN(NoIndicator, noIndicatorKey, get_boolean_value_for);
    IF_CHANGED_SET_KEYED_BOOLEAN(ArrowsOnly, arrowsOnlyKey, get_boolean_value_for);
    IF_CHANGED_SET_KEYED_BOOLEAN(FrameOnly, frameOnlyKey, get_boolean_value_for);
    IF_CHANGED_SET_KEYED_BOOLEAN(SegmentTrailingSeparator, segmentTrailingSeparatorKey, get_boolean_value_for);
    IF_KEY_EXISTS_DO(segmentLeadingSeparatorKey, IF_CHANGED_SET_KEYED_BOOLEAN(SegmentLeadingSeparator, segmentLeadingSeparatorKey, get_boolean_value_for));
    IF_CHANGED_SET_KEYED_BOOLEAN(NothingToScroll, nothingToScrollKey, get_boolean_value_for);
    IF_CHANGED_SET_KEYED_BOOLEAN(WindowTitleBarSeparator, windowFrameDrawTitleSeparatorKey, get_boolean_value_for);
    IF_CHANGED_SET_KEYED_BOOLEAN(WindowClipCorners, windowFrameDrawClippedKey, get_boolean_value_for);
    IF_CHANGED_SET_KEYED_BOOLEAN(BooleanValue, valueKey, get_boolean_number_value_for);

    { // animation is special: keep setting while true
        jlong value = (newProperties & MASK(Animating));
        Boolean animating = value != 0L;
        Boolean changed = ((oldProperties & MASK(Animating)) - value) != 0L;
        if (animating || changed) {
            JRSUIControlSetAnimating(control, animating);
        }
    }

    return 0;
}


/*
 * Class:     apple_laf_JRSUIConstants
 * Method:    getPtrForConstant
 * Signature: (I)J
 */
JNIEXPORT jlong JNICALL Java_apple_laf_JRSUIConstants_getPtrForConstant
(JNIEnv *env, jclass clazz, jint constant){
    return ptr_to_jlong(JRSUIGetKey(constant));
}

Other Java examples (source code examples)

Here is a short list of links related to this Java JRSUIConstantSync.m source code file:

... this post is sponsored by my books ...

#1 New Release!

FP Best Seller

 

new blog posts

 

Copyright 1998-2021 Alvin Alexander, alvinalexander.com
All Rights Reserved.

A percentage of advertising revenue from
pages under the /java/jwarehouse URI on this website is
paid back to open source projects.